MATLAB: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Rotbot (discussione | contributi)
m Bot: -Sito ufficiale +T:Collegamenti esterni
Nessun oggetto della modifica
Riga 41:
 
=== Prompt dei comandi (Command Window) ===
La ''Command Window'' è una finestra dell'interfaccia principale di MATLAB, nella quale è possibile digitare [[istruzione (informatica)|comandi]] supportati, e visualizzare a videoschermo in tempo reale i risultati. Ad esempio è possibile utilizzare Matlab come una potente [[calcolatrice]]:
2+3
ans=5
Riga 49:
È presente anche un help off-line sintetico richiamabile tramite il comando:
help <nome_comando>
Dove ovviamente <nome_comando> siindica riferiscel'istruzione al comando sulsulla quale abbiamosi bisognonecessita di aiuto.
Esempio
help sqrt
Riga 60:
^ (elevamento a potenza)
Se si scrivono più comandi su una stessa linea è necessario separarli con una virgola ‘,' . Se un comando è terminato con un punto e virgola (;), i risultati ottenuti non verranno visualizzati immediatamente in Command Window, ma verranno solo salvati in workspace (cfr paragrafo successivo).
Con la freccia in su, tasto ↑, si scorronovisualizzano i comandi eseguiti precedentemente eseguitied è possibile eseguirli di nuovo. Si possono utilizzare le parentesi () per modificare la priorità tra le varie operazioni.
 
=== Workspace ===
Il ''Workspace'' è lo spazio di lavoro (o spazio di memoria) contenente le variabili dichiarate. Per visualizzare tutte le variabili utilizzate si utilizza il comando <code>who</code>, mentre con il comando <code>whos</code> si visualizzano tutte le variabili utilizzate, ma in forma estesa, cioè ci viene data la loro descrizione: con nome, dimensione, memoria occupata, classe e attributi.
 
La finestra Workspace elenca tutte le variabili allocate in workspace in questo momento, e dà la possibilità di allocare nuove variabili o di importare dall'esterno un elenco di variabili (ad esempio da un file di testo). È inoltre possibile stampare l'elenco delle variabili attuali od eliminarne una direttamente dalla finestra (senza scrivere nessun comando insomma).
 
Per visualizzare in Command Window il valore di una variabile memorizzata in workspace in questo momento,Workspace è sufficiente scrivere il nome della variabile stessa.
 
=== Current Directory ===
La finestra ''Current Directory'' permette, come si può intuire, di esplorare il contenuto delle cartelle sul proprio hard disk. Da questa finestra è possibile aprire direttamente file compatibili con MATLAB con un semplice doppio click. Inoltre è possibile esplorare cartelle utilizzando, in Command Window, comandi tipici dei moderni sistemi operativi basati su tecnologia [[UNIX]] (come [[linuxLinux]] e [[Apple Macintosh|MACMacintosh]])., come "cd nomecartella", "cd . .", "cd /indirizzocartella", e così via.
 
=== Command History ===
Nella finestra ''Command History'' sono elencati tutti i comandi digitati di recente, divisi per ora e data. È possibile rilanciare direttamente da Command History, un comando digitato in Command WindowsWindow in precedenza, semplicemente con un doppio click.
 
== Programmare in MATLAB ==
=== Variabili ===
==== Variabili predefinite ====
In MATLAB ci sono delle [[variabile (informatica)|variabili]] il cui valore è predefinito (ma può comunque essere modificato dall'utente). Esse sono:
* ''i'', ''j'': [[unità immaginaria]] in un [[numero complesso]]
* ''pi'': approssimazione di [[pi greco]], π
Riga 95:
var1=1
var2='abc'
Se non si vuole visualizzare il valore della variabile appena dopo averla dichiarata (come normalmente èavviene) si deve terminare l'assegnamento con un punto e virgola:
var3=1234;
var4='abcdef';
Riga 113:
viene effettuata la pulizia di tutta la workspace.
 
'''N.B.''': di default le variabili numeriche dichiarate sono tutte di tipo double (floating point in doppia precisione).
 
=== Vettori ===
Riga 126:
Esempio:
vc=[3; 1; 6; 8]
Spesso è utile definire i vettori con intervalli., Adad esempio un vettore che contiene i primi dieci numeri interi.
In generale:
v=[inizio:incremento:fine]|[inizio:fine]
Riga 135:
v1=[1 2 3 4 5 6 7 8 9 10]
v2=[-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1]
se non si scrive l'incremento, per default èesso viene posto uguale a 1.
 
Bisogna stare attenti a non assegnare all'incremento e alla destinazione numeri relativi discordi, fatto che produrrà il seguente risultato in fase di esecuzione:
Riga 148:
v(posizione_indice)
v(k), dove k <math>\in</math> <math>\mathbb{N}</math>, seleziona l'elemento in posizione k-esima
Importante: a differenza di quanto avviene in molti altri linguaggi, gli indici deidi vettori e matrici si contano a partire da 1.
Esempio di indicizzazione:
v=[7 3 0 5 2 6]
Riga 156:
=== Matrici ===
==== Definizione matrici ====
Per creare una matrice si procede in modo simile alle variabili, per quanto riguarda l'assegnamento, racchiudendo la matrice tra patentesiparentesi quadre, separando gli elementi di una stessa riga con una virgola o con uno spazio e le righe con un punto e virgola.
M1=[1 2 3 4;5 6 7 8;9 10 11 12]
M2=[13,14,15;16,17,18]
Riga 189:
 
==== Operazioni con le matrici ====
Si elenca ora una serie di operazioni molto utili per lavorare con le matrici in ambiente MatlabMATLAB.
 
Sia A una generica matrice mxn, con il comando
Riga 221:
Con il comando
trace(A)
si ottiene la '''traccia''' di A, cioè la somma degli elementi della diagonale principale.
 
Con il comando
Riga 232:
 
=== Realizzazione di grafici 2D ===
Uno strumento molto potente che l'ambiente MATLAB offre per rappresentare dati numerici è la rappresentazionepossibilità tramitedi realizzare il grafico di una funzione. In particolare, dati due vettori x e y delle stesse dimensioni, è possibile rappresentarnetracciare il grafico di y=f(x) con il comando
plot(x,y)
siSi fa notare che il comando plot non solo disegna y in funzione di x ma crea automaticamente anche un'interpolazione lineare dei valori assunti dalla funzione (dato che ovviamente nessuna funzione memorizzata in un calcolatore è continua).
 
È possibile includere opzioni aggiuntive come il colore o il tipo di linea seguendo la seguente sintassi:
plot(x,y,'marcatore stile colore')
dove il marcatore sta ad indicare in che modo i punti delladei due funzionevettori saranno rappresentati (ad esempio: +, *, o, x), lo stile è lo stile della linea (è possibile scegliere tra linea continua, tratteggiata, tratto punto ed altri ancora: -, - -, :, -.) che unirà i punti e il colore è quello del grafico, contrassegnabilecontrassegnato con l'iniziale in inglese del colore scelto (ad esempio per avere un grafico verde si dovrà digitare ''g,'' iniziale di ''green''). È da notare che se si assegna un marcatore al comando plot, questo non effettuerà più l'interpolazione lineare automatica tra i punti della funzione.
 
Allo stesso modo, con il comando plot, è possibile disegnare una matrice quadrata:
Riga 261:
È possibile, in modo molto semplice disegnare diversi grafici nella stessa finestra. Per fare ciò si usa il comando
subplot(m,n,p)
Con tale comando si disegnano in una finestra mxn grafici. Il comando subplot va inserito subito prima del comando plot, e la variabile p rappresenta il numero del grafico da disegnare, contando lungo le righe. Ad esempio se si sta disegnandolavorando su una finestra con 3 righe e 4 colonne di grafici, e si vuole disegnare ora il secondo grafico della seconda riga, si scrive:
subplot(3,4,6)
 
Con il comando
axis([xi xf yi yf])
è possibile impostare a priori\ la porzione di grafico da visualizzare, indicando con xi l'ascissa iniziale, xf l'ascissa finale, yi l'ordinata iniziale e ovviamente yf l'ordinata finale. Si fa notare che vanno inseriti fra parentesi quadre perché la funzione axis ha bisogno dirichiede un vettore in ingresso, quindi è ovviamente possibile dichiarare all'esterno tale vettore e fornirglielofornirlo come argomento:
axis(V)
 
== Analisi e simulazione di sistemi dinamici con MATLAB ==
MATLAB è un potentissimo strumento per l'analisi numerica di sistemi dinamici, anche con molti ingressi e uscite. MATLAB permette di dichiarare facilmente degli oggetti sistema, grazie ad alcuni comandi giàche prontisi allpossono utilizzare installando un apposito componente aggiuntivo, il ''Control System Toolbox''uso. Dato un sistema dinamico è possibile quindi dichiararlo come sistema in forma esplicita (comando '''ss''', cioè state-space)
 
Sistema in forma esplicita (comando '''ss''', cioè state-space)
sys=ss(A,B,C,D,t0)
dove A, B, C, D, sono ovviamente le matrici dei coefficienti, mentre t0 è il periodo di campionamento dise si considera un sistema a tempo discreto, se t0 viene omesso si dichiara un sistema a tempo continuo.
 
SistemaIl sistema può essere dichiarato anche in forma zeri-poli-guadagno (comando '''zpk''', zero-pole-gain)
sys=zpk([z1 z2 ··· zm],[p1 p2 ··· pn],K)
È da notare che K non è il guadagno statico del sistema, ma è semplicemente la costante fuori dalla funzione di trasferimento quando è nella forma K*Π(s-z_i)/Π(s-p_i).
 
FunzionePer definire una funzione di trasferimento (si impiega il comando '''tf:''', transfer function)
sys=tf(NUM,DEN)
dove num e den sono vettori riga contenenti i coefficienti dei polinomi al numeratore e al denominatore della funzione di trasferimento desiderata, presi dal grado maggiore a quello minore. per esempio il polinomio: s^3-4s^2+0.23s-1.9, equivale al vettore riga:
Line 287 ⟶ 285:
Con il comando
lsim(sys,u,t,x0)
si ottiene l'andamento del sistema ''sys'' forzato dall'ingresso ''u'', durante il tempo ''t'', con stato iniziale ''x0''. ''u'' deve essere, in pratica, un segnale campionato in tutti gli istanti contenuti nel vettore ''t''. È evidente quindi che ''u'' e ''t'' devono avere la stessa dimensione, cioè lo stesso numero di elementi.
 
=== Un semplice esempio di simulazione ===
Line 325 ⟶ 323:
lsim(sys,u,t,[0 0]')
 
lo stesso risultato si poteva ottenere con il comando ''step,'' che traccia il grafico della risposta al segnale di ingresso a scalino:
step(sys)
il tempo in questo caso è calcolato automaticamente, ma può anche essere specificato: