MATLAB: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Annullate le modifiche di 82.55.54.89 (discussione), riportata alla versione precedente di Krdan
Etichetta: Rollback
Riga 30:
== Cenni storici ==
 
Abbreviazione di "MATrix LABoratory", MATLAB fu creato alla fine degli anni settanta da [[Cleve Moler]], il presidente del dipartimento di scienze informatiche dell'[[Università del Nuovo Messico]]. Egli creò MATLAB per dare ai suoi studenti accesso a [[LINPACK]] e ad [[EISPACK]] senza che essi dovessero necessariamente conoscere il [[Fortran]]. Presto il software si diffuse nelle altre università e trovò un grande pubblico tra la comunità dei matematici applicati. L'ingegnere [[John N. Little|Jack Little]], un ingegnere, conobbe il programma durante una visita a Moler all'[[Università di Stanford]] nel [[1983]]. Riconoscendo il suo potenziale commerciale, si unì con Moler e Steve Bangert. Essi riscrissero MATLAB in [[linguaggio C]] e fondarono la ''The MathWorks'' nel [[1984]] per continuare il suo sviluppo.
 
== Interfaccia ==
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]
seSe 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 180:
Per selezionare un elemento di una matrice, utilizziamo la seguente istruzione:
M(indice_riga, indice_colonna)
M(l,k) dove l,k <math>\in</math> <math>\mathbb{N}</math>, selezionano l'elemento che si trova in riga l-esima e colonna k-esima
È possibile estrarre anche intere colonne o righe. Supponiamo di avere una matrice M delcon tipom nxmx n elementi, in generale:
M(l,:) , estrae l'intera riga l-esima in un vettore riga di dimensionecon m elementi
M(:,k) , estrae l'intera colonna k-esima in un vettore colonna di dimensionecon n elementi
M(:) , estrae l'intera matrice in un vettore colonna di dimensione nxm
Per eliminare la colonna di una matrice M:
M(:,k)=[] ,elimina la colonna k-esima, la matrice M diventa nx(m-1)
Riga 191:
Si elenca ora una serie di operazioni molto utili per lavorare con le matrici in ambiente MATLAB.
 
Sia A una generica matrice mxnm x n, con il comando
size(A)
si ottiene un vettore composto dal numero di righe e dal numero di colonne della matrice A (ovviamente questo è estendibile anche a dimensionimatrici maggioricon più di 2 dimensioni).
 
Con l'operatore ' (apostrofo), si ottiene la matrice '''trasposta''' di A:
Riga 232:
 
=== Realizzazione di grafici 2D ===
Uno strumento molto potente che l'ambiente MATLAB offre per rappresentare dati numerici è la possibilità di realizzare il grafico di una funzione. In particolare, dati due vettori x e y dellecon stesseuguale dimensioninumero di elementi, è possibile tracciare il grafico di y=f( in funzione di x) con il comando
plot(x,y)
Si 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).
Riga 238:
È 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 dei due vettori 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, contrassegnato 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, ma si limiterà a rappresentare i singoli punti.
 
Allo stesso modo, con il comando plot, è possibile disegnare una matrice quadrata:
Riga 246:
dove y1=f(x1), y2=f(x2), e così via, rappresentano le funzioni da rappresentare, oppure utilizzare il comando
hold on
che fa sì che, se c'è un grafico attivo, questo non venga chiuso e il successivo plot si sovrapponga ad esso.
 
Con il comando:
Riga 259:
aggiunge una griglia al grafico corrente.
 
È 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 mxnm x n 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 da sinistra a destra. Ad esempio se si sta lavorando su una finestra con 3 righe e 4 colonne di grafici e si vuole disegnare il secondo grafico della seconda riga, si scrive:
subplot(3,4,6)
 
Con il comando
axis([xi xf yi yf])
è possibile impostare\ 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 richiede un vettore in ingresso, quindi è ovviamente possibile dichiarare all'esterno tale vettore e fornirlo come argomento:
axis(V)
 
Riga 272:
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 che si possono utilizzare installando un apposito componente aggiuntivo, il ''Control System Toolbox''. Dato un sistema dinamico è possibile quindi dichiararlo come sistema in forma esplicita (comando '''ss''', cioè state-space)
sys=ss(A,B,C,D,t0)
dove A, B, C, D sono le matrici dei coefficienti, mentre t0 è il periodo di campionamento se si considera un sistema a tempo discreto, mentre se t0 viene omesso si dichiara un sistema a tempo continuo.
 
Il sistema può essere dichiarato anche in forma zeri-poli-guadagno (comando '''zpk''', zero-pole-gain)
Riga 280:
Per definire una funzione di trasferimento si impiega il comando '''tf:'''
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, presiordinati dal grado maggiore a quello minore. perAd esempio per indicare il polinomio: s^3 - 4s^2 + 0.23s - 1.9, equivalesi aldeve inserire il vettore riga:
[1 -4 +.23 -1.9]
 
Riga 323:
lsim(sys,u,t,[0 0]')
 
lo stesso risultato si poteva ottenere con il comando ''step,'' che traccia direttamente il grafico della risposta al segnale di ingresso a scalino:
step(sys)
il tempo in questo caso è calcolato automaticamente, ma può anche essere specificato: