Sei sulla pagina 1di 3

Comandi frequenti del Matlab

Studio di sistemi lineari

In Matlab un sistema lineare pu essere definito in tre modi: sys=ss(A,B,C,D) definisce il sistema SYS dalle matrici A, B, C e D. sys=zpk(z,p,k) definisce il sistema mediante gli zeri, i poli ed il guadagno della sua funzione di trasferimento. sys=tf(num,den) definisce il sistema mediante i coefficienti del numeratore e del denominatore della sua funzione di trasferimento. Se ad esempio il sistema ha la funzione di trasferimento 10s(s-2)/(s+1)(s+3) possiamo usare le istruzioni zpk([0 2],[-1 -3],10) oppure tf([10 -20 0],[1 4 3]) (tenendo conto che la funzione equivale a (10s^2-20s)/(s^2+4s+3)). Dalla versione 6.0 del Matlab possibile inserire la funzione di trasferimento in forma simbolica usando i comandi: s=tf('s') oppure s=zpk('s') sys=10*s*(s-2)/(s+1)/(s+3) Per visualizzare i diagrammi di Bode, di Nyquist, di Nichols e il luogo delle radici (positivo) del sistema usare rispettivamente i comandi: bode(sys) nyquist(sys) nichols(sys) rlocus(sys) Per attivare/disattivare lo zoom e la griglia nel grafico si usano i comandi zoom e grid. Per sovrapporre al diagramma di Nichols le curve della carta di Nichols usare il comando ngrid. margin(sys) calcola margine di ampiezza e margine di fase con le relative pulsazioni, evidenziandole sui diagrammi di Bode. evalfr(sys,s) valuta il valore (complesso) della funzione di trasferimento alla frequenza complessa s (usare abs e phase per calcolarne modulo e fase in radianti). Il comando nyquist del Matlab non visualizza le circonferenze all'infinito. E' possibile scaricare qui una versione modificata, che calcola anche il numero di poli Re > 0 della funzione a ciclo chiuso col criterio di Nyquist. I file .M contenuti nel file zip vanno inseriti in una cartella accessibile dal path di Matlab. Saranno quindi disponibili due nuovi comandi: nyquist1(num,den) disegna il diagramma di Nyquist del sistema la cui funzione di trasferimento definita da num e den, che sono le matrici dei coefficienti del numeratore e del denominatore. lnyquist1(A,B,C,D) disegna il diagramma di Nyquist del sistema dato in forma di

stato. Consiglio: se installato il Symbolic Toolbox, possibile utilizzare l'istruzione sym2poly per calcolare num e den nella seguente maniera: syms s num=sym2poly(10*s*(s-2)) den=sym2poly((s+1)*(s+3))
Interpolazione e fitting di dati sperimentali

X e Y siano due vettori riga contenenti le ascisse e le ordinate dei dati sperimentali. Per effettuare l'interpolazione mediante spline necessario creare un vettore riga XX contenente i punti su cui si vuole valutare la funzione interpolata (pi fitto il vettore meglio verr il grafico). Ad esempio XX=0:.1:10; se i dati sono contenuti nell'intervallo [0,10]. Quindi l'istruzione YY=spline(X,Y,XX); crea il vettore riga YY contenente le ordinate della funzione interpolata sui punti di XX. Per disegnarla basta eseguire l'istruzione plot(XX,YY), se si vogliono evidenziare i dati sperimentali eseguire invece plot(X,Y,'.',XX,YY). Per trovare i coefficienti del polinomio di grado N che meglio si adatta ai dati sperimentali eseguire l'istruzione P=polyfit(X,Y,N). Per valutare la funzione polinomiale trovata sull'intervallo definito da XX usare il comando YP=polyval(P,XX);. Quindi per disegnarla plot(XX,YP) (se non si vuole cancellare il grafico precedente eseguire prima hold). Eseguire un fitting non lineare un po' pi complicato e deve essere installato lo Statistics Toolbox. La funzione a cui si vogliono "fittare" i dati deve essere definita in un file .M nella forma f(beta,x), dove beta la matrice dei parametri che si devono determinare col fitting. Ad esempio se la funzione y=a+b*exp(c*x) possiamo cos scrivere il file exp1.m: function y=exp1(beta,x) y=beta(1)+beta(2)*exp(beta(3)*x); Quindi eseguiamo il comando beta=nlinfit(X',Y','exp1',beta0). Ho usato X' e Y' perch questa funzione accetta vettori colonna. beta0 un vettore con la stima iniziale dei parametri (nel nostro caso di dimensione 3). Se si ha errore o il fitting non converge riprovare con un beta0 diverso. Il vettore beta conterr i parametri determinati dal fitting. Per disegnare la funzione determinata sull'intervallo definito da XX possiamo eseguire i comandi: YF=exp1(beta,XX); plot(X,Y,'.',XX,YF) Nota: per rappresentare i dati su scale logaritmiche basta usare al posto di plot le istruzioni loglog, semilogx e semilogy. Home Scrivimi Torna su Indietro Visite dal 17 marzo 2004 Per visualizzare al meglio il sito si consiglia di utilizzare Mozilla

Firefox oppure Internet Explorer versione 5 o sucessiva alla risoluzione di 800x600 con caratteri medi.