Programming in MATLAB

Indice

MatLab (abbreviazione di Matrix Laboratory) è un linguaggio di programmazione creato dal matematico Cleve Moler e rilasciato, almeno a livello commerciale, nel 1984. Impiegato massivamente in ambito accademico, industriale e scientifico viene utilizzato largamente dai vari specialisti dei relativi settori, i quali contribuiscono attivamente alla creazione di vari tool e/o app per le esigenze più disparate.

È un linguaggio di programmazione interpretato, di quarta generazione perciò presenta una grammatica e sintassi simile a quella dei linguaggi naturali umani (con la dovute semplificazioni) ed è, inoltre, un linguaggio di alto livello; con questo termine intendiamo il livello di semantica, ossia che le istruzioni sono molto più vicine al linguaggio umano che a quello macchina (che sono solo zeri ed uno o, in ultima analisi, livelli di tensione elettrica).

Essendo quindi molto più vicino al linguaggio naturale degli umani che a quello della macchina, per impararlo, non dovremmo fare molto diversamente da quello che faremmo per imparare una lingua nuova, tuttavia, essendo semplificato potremmo arbitrariamente saltare quelle regole tipiche dei linguaggi naturali e concentrarci esclusivamente sulla sintassi e successivamente la semantica, partiamo quindi dai costrutti fondamentali.

Saltiamo a piè pari l’installazione (che si fa andando semplicemente sul sito MathWorks), apriamo e ci autentichiamo, quello che dovremmo vedere è la seguente situazione.

L’interfaccia è suddivisa in diverse finestre:

Variabili

Conosciamo tutti, dalla matematica o fisica, il significato di variabile, in programmazione tuttavia è leggermente diverso, con variabile intendiamo un qualcosa che “contiene” un valore di un determinato tipo (come un numero intero, un numero reale, un carattere, una frase ecc) e può essere definito in qualsiasi parte del programma. A livello intuitivo si può pensare come alla variabile ad una scatola e il valore al contenuto di essa.

Le variabili sono delle stringhe (parole e insieme di parole) e per rappresentarle dobbiamo seguire delle precise regole di sintassi:

L’assegnazione dei valori avviene nel seguente modo:

nome_variabile = espressione (gli spazi prima e dopo l’uguale sono solo per evidenziare i due membri), come di seguito.

Nel caso dovessimo violare una delle regole precedenti ci comparirebbe a schermo la seguente situazione.

È possibile, inoltre, dichiarare più variabili sulla stessa riga che dovranno essere separate da virgole (,) oppure da un punto e virgola (;), in quest’ultimo caso la variabile verrà nascosta, ossia non verrà mostrata nella command window ma solo nello workspace.

Tipi di dati

In informatica, un tipo di dato è semplicemente il nome che indica l’insieme (non per forza numerico) dei valori che una variabile può assumere e le operazioni che su tali valori si possono eseguire.

In MatLab l’assegnazione di tipo ad una variabile avviene in maniera semi-automatica, ossia, più precisamente:

  1. Se non espressamente specificato MatLab assegnerà di default alla variabile come tipo un double a 8 byte;

Quindi in MatLab abbiamo un tipo di tipizzazione dinamica, in pratica finché non siamo noi a dichiararlo esplicitamente fa tutto in maniera automatica, come nel seguente esempio.

Di seguito una piccola tabella coi tipi di MatLab più utilizzati.

TipoFunzione di conversione
Interi a 32 bit con segnoint32
Interi a 64 bit con segnoint64
Reali a 32 bitsingle
Reali a 64 bitdouble
Caratteri a 8 bitchar
Stringhe a 1200 bitstring


Script e live script

Concettualmente assolvono allo stesso scopo: sostanzialmente è come se aprissimo un editor dove andremo a scrivere il nostro codice sorgente per creare poi un eseguibile la differenza è che mentre nello script bisogna salvare il file per poterlo poi successivamente eseguire nel live script si può eseguire direttamente e vedere passo per passo cosa succede fino all’ultima istruzione scritta ed eseguita, tutto ciò è molto utile in fase di debugging quindi ci concentreremo solo su quello, è possibile aprirlo cliccando su “home”, poi cliccando su “new live script”, ci comparirà una situazione del genere.

Questo sarà il nostro ambiente di lavoro dove andremo ad apprendere ed applicare quegli strumenti che ci permetteranno di scrivere programmi.

Espressioni

Possono essere di vario tipo ma le due macro-categorie principali sono quelle numeriche e quelle relazionali.

Quelle numeriche si possono creare tramite valori (di qualunque tipo), altre variabili, operatori, funzioni built-in come per esempio

nella espressione della variabile x identifichiamo un valore (2), un operatore (*), una funzione built-in (sin) e un’altra variabile (y), ovviamente, come si vede nello workspace la x ci ridà un valore numerico, come volevamo.

Gli operatori possono essere:

Sono gli stessi operatori che troviamo in matematica ed hanno le stesse regole, le stesse proprietà e rispettano le stesse precedenze, ad esempio: le parentesi () hanno precedenza su tutto e sono in grado di modificare il flusso delle operazioni, poi troviamo l’elevamento a potenza (^) che ha precedenza sulla moltiplicazione o divisione (* e /) che a loro volta hanno precedenza sull’addizione o sottrazione (+ e -) e così via.

Gli operatori possono svolgere operazioni tra operandi di classi numeriche diverse, il tipo di uscita segue il seguente schema.

 DoubleSingleIntero
DoubleDoubleSingleIntero
SingleSingleSingleIntero
InteroInteroInteroIntero

MatLab fa questo in automatico grazie alla sua tipizzazione dinamica, come in fisica, “vince” il tipo con meno precisione.

Le espressioni relazionali sono importanti tanto quelle numeriche e seguono la loro falsa riga, tuttavia, il valore che essi restituiscono è di tipo booleano, un valore logico che può assumere solo due valori, 1 che corrisponde a TRUE, ossia vero, e 0, che corrisponde a FALSE, ossia falso, in pratica ci dirà se tale condizione è verificata o meno e non per quali valori (come faremmo in matematica) perciò è meglio esplicitare la loro sintassi, la loro semantica e il loro output.

Operatore in ordine di precedenzaInterpretazioneEsempioRisultato
~Negazione, funziona come in matematica.~ (5 > 3)0, falsa in quanto 5 > 3, che sta dentro le parentesi è vera quindi 1, poi viene negata tramite ~ e quindi diventa 0.






(1) >= (>);

(2) <= (<);

(3) ==;

(4) ~=;

((1)-(2)-(3)-(4) hanno tutti lo stesso ordine di precedenza)

Maggiore o uguale
(maggiore stretto)
Minore o uguale (minore stretto)
Uguale (nel senso identico)
Diverso
5 >= 5
(5 > 5)
7 <= 7
(7 < 7)
10 == 10 10 ~= 11
1, vero
(0, falso)
1, vero
(0, falso)
1, vero
1, vero
&& (&)Prodotto logico, congiunzione dell’algebra booleana valutata globalmente (localmente)2 > 9
&&
3 > -2
1, vero. Devono essere verificate sempre entrambe, altrimenti diventa falso.
|| (|)Somma logica, dell’algebra booleana valutata globalmente (localmente)2 > 9
||
3 < -2
1, vero, in quanto è sufficiente che almeno una delle condizioni sia verificata (la prima o la seconda oppure entrambe). È falsa se e solo se entrambe sono false.
=Assegnazione, quello che si fa con le variabilix=5Il valore della variabile sarà appunto 5.

Array

Tutte le variabili in MatLab sono array multidimensionali, indipendente dal tipo di dati, ma cosa è un array? Possiamo definire come array una collezione di elementi, tutti dello stesso tipo di dati, organizzati in righe e colonne quindi, sostanzialmente, matrici analogamente, anche qui, a come facciamo in matematica; quindi, anche gli scalari sono particolari casi di matrici (1×1), così come i vettori riga (1xn) e colonna (nx1), andiamo quindi a vedere come sono strutturati, come è la loro sintassi e la semantica.

Ciascun elemento di un vettore ha due proprietà che lo contraddistinguono:

  1. un valore, che può essere numerico, letterale, booleano oppure una stringa (ed ovviamente anche gli altri saranno dello stesso tipo);
  2. una posizione, ossia il posto preciso che occupa nella sequenza, tale posizione verrà anch’essa registrata con un numero, il cosiddetto indice il quale, identifica univocamente un elemento del vettore.

Vediamo un esempio.

722-6-67335

In MatLab non compare così, è solo un artificio grafico per farci un’idea; i valori sono: 7, 22, -6, -67, 3, 3, 5. Non c’è un ordine, sono messi completamente a caso. Ora, ci sono due elementi uguali, se vogliamo prendere il valore 3 quindi avremo due possibilità, è per questo che ci serve anche sapere dove si trova, ossia il suo indice così andremo a scegliere proprio quello che ci interessa, in questo caso l’indice del 3 che ci interessa è i=6, si trova nella sesta casella partendo dalla sinistra, in questo modo avremo che il 7 ha indice i=1, il 22 ha indice i=2 e così via.

Per creare un vettore su MatLab possiamo scriverlo direttamente oppure usare delle funzioni built-in, il secondo metodo lo affronteremo più avanti quando parleremo delle funzioni e vedremo anche tutti i comandi più utilizzati perciò, per creare un vettore in MatLab la sintassi è la seguente.

È tassativo, per la creazione del vettore colonna, mettere il punto e virgola.

Un’altra operazione fondamentale da fare coi vettori è la manipolazione delle sue componenti tramite l’indice. Sia quindi “Vettore” il nostro vettore creato con le regole di cui sopra, sia (i) l’indice generico a cui vogliamo accedere, allora Vettore(i) restituirà il valore dell’elemento corrispondente a quell’indice, mentre Vettore(i) = valore modificherà il valore dell’elemento selezionato con uno a nostro piacere, un esempio pratico chiarirà le idee.

L’indice può essere a sua volta un vettore così da poter accedere e/o modificare più componenti contemporaneamente, tale strumento prenderà il nome di vettore indice che deve seguire delle regole specifiche quali:

Come vediamo, nel caso l’indice ecceda la lunghezza del vettore originale, se andiamo a cambiare il valore in un indice che non esiste MatLab allocherà quel valore all’indice desiderato e gli indici nel mezzo verrà assegnato per default zero, nel caso invece avessimo acceduto, solo in lettura a quella posizione nel vettore originale avremmo ottenuto il seguente messaggio, in accordo con le regole enunciate.

Gli indici possono essere anche logici, verranno sempre contraddistinti da valori numeri, 0 e 1, ma verranno interpretati come false e true, rispettivamente. In pratica verranno letti e/o sostituiti solo i valori che corrispondono a 1 (true).

Per quanto riguarda le operazioni matematiche sui vettori si rimanda alla geometria, nel senso che le operazioni si effettuano con le stesse regole e modalità della geometria classica, particolare attenzione bisogna fare alla sintassi per distinguere le operazioni fatte con gli scalari e quelle con vettori (e quindi matrici). Possiamo anche fare operazioni logiche sui vettori (ed array in generale) a patto che abbiano la stessa dimensione in quanto le valutazioni vengono fatte elemento per elemento.

Abbiamo introdotto e trattato i vettori (anche se in maniera semplificata e non esaustiva ma non è questo lo scopo del tutorial, vogliamo semplicemente dare una infarinatura di base) che sono casi particolari di matrici (in realtà anche gli scalari lo sono) passiamo ora al caso più generale che possiamo trattare: le matrici.

Le matrici, anche in questo caso, derivano direttamente dalla geometria con le stesse regole, le stesse eccezioni e le stesse proprietà vediamo quindi solo come implementarle. Anche in questo caso vedremo come crearle manualmente (successivamente vedremo tutte le funzioni libreria che ci permetteranno di automatizzare questi processi ma attualmente è necessario sporcarsi le mani), la sintassi è simile a quella dei vettori, scriveremo i valori distanziati da virgole o spazi e successivamente per creare una nuova colonna basterà semplicemente mettere un punto e virgola (;), come in immagine.

Per quanto riguarda gli indici valgono le stesse regole precedentemente trattate con la sola differenza che ora avremo 2 indici, uno riga ed uno colonna e quindi indicheremo una componente con precisione nel seguente modo A(r, c).

Una funzione interessante è il linear indexing che permette di avere solo un indice e gestire le componenti percorrendo la matrice colonna per colonna; quindi, quando indicheremo con A(n) esso verrà trovato percorrendo la matrice primo elemento, poi scenderà alla seconda riga mantenendo la colonna corrente, una volta arrivata all’ultima riga, se l’elemento non sarà quello cercato andrà alla seconda colonna e continuerà finché non avrà trovato l’elemento.

Istruzioni di I/O

Sono istruzioni fondamentali per interagire con l’utente in quanto permettono di parametrizzare i problemi in funzione di ciò che serve al fruitore in quell’esatto momento e restituire ciò che sta cercando.

La prima istruzione che vediamo è quella di input, che permette all’utente di digitare, tramite tastiera, un qualunque valore che verrà allocata nella variabile voluta.

La sintassi dell’istruzione è la seguente nome_variabile = input(‘messaggio che si vuole far apparire a schermo’, ‘tipo di dato da introdurre’). Il tipo di dato è opzionale, se viene messa esplicitamente e l’utente digita un tipo di dato diverso da quello previsto verrà rimandato un messaggio di errore. Per quanto riguarda l’output abbiamo due possibilità:

  1. l’istruzione disp(‘messaggio che si vuole stampare a schermo’), semplice, immediata, facile da utilizzare che però è priva della possibilità di formattare il testo (ossia di farlo apparire come noi desideriamo);
  2.  l’istruzione fprintf(‘La somma di %d e %d è %d \n’, a, b, somma) presentata già con esempio concreto per poter notare la netta differenza con la precedente. Notiamo un nuovo simbolo, %d comunemente chiamato place holder, praticamente stiamo dicendo che in quella posizione vogliamo un numero intero che sarà determinato da quello che verrà fuori dagli apici e generalmente sarà il valore di una variabile o una operazione matematica, mentre \n è anch’esso un simbolo speciale e indica di andare a capo una volta eseguita l’istruzione, in questo modo la stringa presentata a video sarà esattamente come noi la vogliamo, in forma parametrica e quindi di facile modifica, quello che verrà presentato a video sarà la seguente immagine.

I place holder più comuni ed utilizzati sono i seguenti:

Place HolderImpiego
%dNumeri interi
%fNumeri reali
%cCaratteri
%sStringhe

Istruzioni condizionali

Le istruzioni condizionali sono fondamentali per la stesura di un codice in quanto essere regolano il flusso infatti, come sappiamo, le istruzioni vengono eseguite dall’alto verso il basso, una istruzione per volta, una dopo l’altra. Le istruzioni condizionali permettono di modificare tale flusso in modo da eseguire solo una parte di codice sotto la verifica di una determinata condizione oppure farne un’altra se essa non viene rispettata, abbiamo sostanzialmente 4 grandi famiglie che possiamo utilizzare:

  1. If. Per l’esecuzione di tale istruzione è necessaria un’espressione logica (condizione) che sia verificata (quindi sia true) e il blocco di codice da eseguire se, invece, la condizione non dovesse verificarsi si salta alla istruzione successiva senza eseguire nulla. La sintassi comincia con la parola chiave if, subito dopo la condizione, poi il blocco di istruzioni da eseguire ed infine la parola chiave end che stabilisce la fine del blocco e dell’istruzione, valida per tutte le istruzioni condizionali, iterative ed anche le funzioni (che vedremo poi).

Ovviamente se fosse stato falso non avrebbe stampato nulla.

Da notare la spaziatura, automatica, che esegue MatLab stesso, per semplificare la lettura del codice, tale pratica viene detta indentazione, per l’interprete non fa differenza, esegue in sequenza per noi, invece, è molto utile in quanto ordina il codice in maniera ordinata, efficacia ed efficiente.

L’istruzione switch interroga la variabile capoluogo (a fianco della parola chiave switch, lì ci potrà essere una espressione generale) che l’utente inserirà ed in base a ciò che verrà digitato e immesso nella variabile il costrutto comincerà ad indagare i vari case e quando troverà una corrispondenza precisa eseguirà l’istruzione (o il blocco) contenuta nel case verificato, quindi, se non sarà il primo sarà il secondo, se non sarà il secondo sarà il terzo e così via fino ad arrivare ad un’altra parola chiave, otherwise (il corrispettivo di else) dove eseguirà un’altra istruzione che non ricade in nessuna casistica precedente. In questo caso abbiamo fatto partire lo script ed abbiamo inserito “Milano” e ci ha stampato quello che volevamo. A fianco a case possono essere contemplati più casi, per farlo è necessario mettere le varie casistiche tra parentesi graffe {}, e separare i casi con virgole.

Istruzioni iterative

Abbiamo sostanzialmente due costrutti. Entrambi assolvono alla stessa funzione, entrambi intercambiabili fra loro nel senso che quello che possiamo fare col ciclo for lo possiamo fare ugualmente con il ciclo while tuttavia, cambia l’approccio al problema, mentre il ciclo for è più indicato per quelle iterazioni che sappiamo a priori quante interazioni avremo, il ciclo while invece, è più flessibile e indicato per quelle occasioni dove non sappiamo a priori quante volte dovremo ripetere l’iterazione.

  1. for. La sua sintassi è la seguente:

for variabile = espressione

<blocco di istruzioni>

end

La variabile non deve essere necessariamente presente nel ciclo, serve solo ad indicare quante volte si vuol far ripetere il ciclo ed anche stabilire l’incremento, nel caso non venga specificato, viene settato di default a +1.

<inizializzazione>

while espressione

<blocco di istruzioni>

incremento della variabile contatore

end

Qui, al contrario del for, il ciclo viene ripetuto finché è vera l’espressione e bisogna ricordare di settare correttamente l’incremento del contatore oppure l’indice che scorre all’interno del ciclo, altrimenti la condizione sarà sempre verificata ed avremo un ciclo infinito da cui non potremo mai uscire in quanto, per uscire da questa iterazione è necessario che la condizione risulti falsa.

Vediamo quindi come usarlo e come non usarlo.

La sintassi è corretta tuttavia otteniamo un ciclo infinito poiché la condizione nell’espressione dopo while risulta sempre verificata.

Anche qui la sintassi è rispettata tuttavia mana l’incremento, quindi l’espressione sarà sempre vera (1<=4) e stamperà sempre la prima componente del vettore, senza mai fermarsi.

Questa è la sintassi corretta ed infatti otteniamo ciò che vogliamo.

Entrambi i costrutti esprimono il loro massimo potenziale quando innestati, come succedeva per i costrutti condizionali, è possibile farlo anche per i cicli, un numero, a livello teorico, illimitato di volte il che è molto utile per esaminare array multidimensionali scorrendo in ogni “direzione”, avremo dunque la possibilità di eseguire m operazioni per cui ogni singola di esse verrà eseguita n volte.

Funzioni

Argomento cardine in MatLab, possiamo considerarli, brutalmente, come “pezzi” di programma che assolvono ad un compito specifico, si potrebbero confondere con gli script, tuttavia, esistono differenze sostanziali sia a livello concettuale che sintattico tra le due, in particolari, le funzioni consistono generalmente in:

  1. Un header, sostanzialmente un titolo di testa, dove troviamo:
    1. la parola chiave function;
    1. il nome dei parametri di uscita, seguito dall’operatore di assegnazione;
    1. il nome della funzione;
    1. i parametri di ingresso, messi tra parentesi tonde ();
  2. Un commento che spiega cosa faccia la funzione, questa parte non è obbligatoria, è opzionale, tuttavia è fortemente consigliata;
  3. Il corpo della funzione che comprende tutte le istruzioni che vogliamo che vengano eseguite;
  4. la parola chiave end che delimita la fine della funzione.

Le variabili dichiarate all’interno della funzione vengono chiamati parametri formali, mentre quelli che vengono passati a quelli di ingresso e/o uscita quando usiamo la funzione in una istanza vengono detti parametri attuali. Vediamo come applicare tutto ciò che abbiamo detto finora con un esempio pratico.

La seguente funzione chiede all’utente di inserire in ingresso un vettore qualsiasi, calcola la somma delle componenti e poi restituisce in uscita la somma a questo livello non sembra ci sia una reale utilità tuttavia non è così, in quanto questa piccola parte di codice, questa funzione, d’ora in poi, la possiamo invocare ed utilizzare quando ci pare, dove ci pare, senza dover mai più scrivere altro codice in quanto lo abbiamo già fatto lì, il che si traduce in una migliore portabilità, leggibilità e manutenibilità del programma.

Ovviamente è possibile annidare le funzioni come con i costrutti precedenti tuttavia bisogna fare un’avvertenza, che verrà trattata in maniera superficiale e per nulla completa in quanto è piuttosto teorica, un po’ al di fuori della seguente guida quindi ne faremo giusto un accenno.

Una funzione è una sorta di scatola nera ed interagisce tramite gli altri programmi, gli utenti, le altre parti del codice solo ed esclusivamente tramite i parametri di ingresso ed i parametri di ingresso, ciò che succede all’interno della funzione è invisibile ed intangibile dall’esterno; questa esigenza nasce dal fatto che le nostre funzioni, potremmo usarle in nei contesti più disparati, potrebbero essere usate anche da altri programmatori e noi non possiamo prevedere a priori i nomi che potrebbero assegnare alle variabili perciò è necessario creare uno spazio di lavoro locale, separato dal resto in modo che le variabili interne alla funzione non vadano in conflitto con quelle definite all’esterno e viceversa.

Cosa succede, per sommi capi, quando invochiamo una funzione: vengono calcolati i valori dei parametri attuali di ingresso; viene creato un workspace locale, separato da quello principale, dedicato esclusivamente alla funzione; i valori dei parametri attuali di ingresso vengono copiati nei parametri formali all’interno del workspace locale; viene eseguita la funzione; vengono copiati i valori di ritorno dal workspace della funzione a quello principale; viene distrutto lo workspace della funzione con tutti i relativi dati.

Stringhe

Definiamo come stringa una qualsiasi sequenza di caratteri delimitata da singoli apici ‘’. In realtà, le stringhe non sono altro che degli array di caratteri, in particolare dei vettori di caratteri; infatti, molte delle operazioni che facevamo sui vettori le possiamo, con le dovute modifiche, riciclare qui con le stringhe. La sintassi è molto semplice variabile = ‘stringa’, dove fra i singoli apici possiamo inserire lettere, maiuscolo o minuscole, numeri, punteggiatura, spazi bianchi e caratteri di controllo.

Per quanto riguarda la loro manipolazione è simile a quella dei vettori e delle matrici in quanto, ribadiamo, sono anch’esse degli array e quindi valgono le stesse regole, elencheremo, nel prossimo paragrafo, tutte le funzioni inline e comandi utili per tutto ciò che abbiamo introdotto finora al fine di velocizzare ed automatizzare tutto ciò che abbiamo detto.

Comandi utili e funzioni

Come anticipato andiamo ad elencare tutti quei comandi e funzioni inline più utilizzate al fine di rendere MatLab ancora più efficiente, flessibile e immediato per la stesura di codice.

Comando/FunzioneUtilizzo
namelengthmaxComando di tipo informativo, ci dice la lunghezza massima del nome della variabile che si può utilizzare in MatLab.
whoStampa a video la lista delle variabili definite nella sessione corrente.
whosDà informazioni aggiuntive rispetto al who, come il tipo delle variabili e le loro dimensioni in byte.
clearCancella tutte le variabili definite nella sessione corrente
clcCancella tutto il testo nella command window.
round(x)Funzione di arrotondamento standard, restituisce l’intero più vicino.
fix(x)Funzione di arrotondamento che restituisce l’intero più vicino allo zero.
floor(x)Funzione di arrotondamento che restituisce l’intero più vicino andando verso i negativi.
ceil(x)Funzione di arrotondamento che restituisce l’intero più vicino andando verso i positivi.
linspace(xmin, xmax, n)Funzione che crea un vettore di n componenti stabilendo il valore minimo, quello massimo ed il passo.
size(A)Funzione che se applicata alle matrici ci dice il numero di righe e colonne.
numel(A)Funzione che restituisce il numero degli elementi.
sum(v)Funzione che prende in ingresso un vettore e restituisce come risultato la somma delle componenti.
mean(v)Funzione che prende in ingresso un vettore e restituisce come risultato la media delle componenti
min(v) e max(v)Funzioni che prendono in ingresso un vettore e restituiscono come risultato il minimo oppure il massimo delle componenti.
zeros(r, c)Funzione che crea una matrice di r righe e c colonne con tutti gli elementi inizializzati a zero.
ones(r, c)Funzione che crea una matrice di r righe e c colonne con tutti gli elementi inizializzati a 1.
rand(r, c)Funzione che crea una matrice r righe e c colonne con ogni singolo elemento inizializzato ad un valore casuale compreso tra zero ed uno.
eye(r, c)Funzione che crea la matrice identità di r righe e c colonne.
Operatore trasposizione.
:Operatore che nella creazione/selezione di matrici o vettori indica di prendere tutta la riga o colonna.
reshape(A, p, q)Funzione che riorganizza in base alle colonne gli elementi di una matrice nxm in una nuova matrice pxq dove nxm=pxq.
repmat(A, p, q)Funzione che crea pxq copie della matrice originale A.
det(A)Funzione che calcola il determinante di A.
find(A)Funzione che restituisce le componenti attraverso l’indicizzazione lineare.
strcat(stringa1, stringa2, …, stringaN)Funzione che concatena più stringhe.
blanks(stringa)Funzione che aggiunge spazi vuoti nella stringa.
deblank(stringa)Funzione che rimuove spazi vuoti nella stringa.
upper(stringa)Funzione che converte tutte le lettere minuscole in maiuscole.
lower(stringa)Funzione che converte tutte le lettere maiuscole in minuscole.
strcmp(stringa1, stringa2)Funzione che confronta due stringhe e restituisce un vettore logico che contiene l’esito del confronto operato componente per componente.
strfind(<stringa>, <carattere>)Funzione che restituisce l’indice del carattere contenuto nella stringa.

Coder C

Una risposta a “Programming in MATLAB”

  1. Avatar Leonardo Varani

    Molto interessante il Matlab Coder…

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *