Uploaded by Martina Merola

MATLAB comandario

advertisement

MATLAB

TERMINOLOGIA E COMANDI PRATICI:

• il ; dopo un comando non mi fa vedere l’esecuzione del comando

• pi  π

1

0

= ∞

• Nan  not a number

• figure (n)  per aprire una n-esima figura

• close  chiude l’ultima figura

• close(n)  chiude l’n-esima figura

• RECORD  crea un record con i campi così definiti o Ingegneria.corsi = 10 o Ingegneria.recapito = ‘via Brecce bianche’

• format long  per vedere + cifre significative

• format long e  formato esponenziale

• format short  torna alle cifre significative di default

• PWD  vedo il Workspace dove sono attualmente

• Salvare le variabili: o SAVE nome_file  crea un file .m

o SAVE nome_file.txt –ASCII  crea un file di testo

• clear  cancello tutte le variabili

• clear a  cancello solo “a”

• who  fa vedere le variabili

• { o }  Alt Gr + SHIFT + [ o ]

• plot(x,y)  disegna un grafico con sull’asse della ascisse i valori di “x” e su quello del ordinate i valori di “y”. “x” ed “y” devono essere vettori delle stesse dimensioni

• semilog(x,y)  analogo al plot, ma in scala logaritmica

• ngrid  aggiunge la griglia alla figure

COMANDI MATEMATICI:

• atan  arcotangente (quella normale tra -90° e +90°)

• atan2(a,b)  arcotangente secondaria dove a = parte Im e b = parte Re

• exp(g)  calcola e g

• expm(a)  calcola l’esponenziale della matrice “a”

MARTICI:

• a=[5 6 4]  definisco un vettore riga “a”

• b=[5;6;4 ]  definisco un vettore colonna “b”

• c=[5 6 4;9 8 4; 2 3 1]  definisco una matrice “c” 3x3

• Prendere sotto blocchi di una matrice

o e = d(2,2:3)  prendo la riga 2 e le colonne dalla 2 alla 3 della matrice “d” e ci costruisco la matrice “e” o e = d(:,2:3)  prendo tutte le righe e le colonne dalla 2 alla 3 della matrice “d” e ci costruisco la matrice “e”

• eig(a)  calcola gli autovalori della matrice “a”

• [V,D] = eig(X)  genera una matrice diagonale D di autovalori e una matrice piena V le colonne della quale sono gli autovettori corrispondenti

• v3=v1*v2  fa il prodotto riga per colonna di 2 vettori (“v1” riga e “v2” colonna)

• u=v1.*v2  fa il prodotto elemento per elemento dei 2 vettori “v1” e “v2”, entrambi riga o entrambi colonna

• trace(a)  restituisce la somma dei valori sulla diagonale della matrice “a”

COMANDI CONTROLLISTICI:

 POLINOMI:

• p1=[1 3 2]  p1 = s 2 + 3s + 2 (per scrivere un polinomio) – p1 può essere sia un vettore che un polinomio, il suo significato dipende dal contesto in cui si utilizza

• roots(p1)  fornisce le radici del polinomio p1

• prodotto tra i 2 polinomi o p3=conv(p2,p3)  prodotto tra i polinomi”p1” e “p2” o p4=conv(p1,conv(p2,p3))  il prodotto tra polinomi può essere usato anche in modo ricorsivo

• valore di un polinomio con un dato valore della “s” o x=polyval(p1,2)  calcola il valore del polinomio con s=2 o b=polyvalm(p1,a)  calcola il valore del polinomio ponendo s=a dove “a” è una matrice che deve essere quadrata

• polyder(p1)  fa la derivata del polinomio “p1”

 FUNZIONI DI TRASFERIMENTO

• f1=tf(p1,p2)  crea la Funzione di Trasferimento (FdT) con “p1” come NUM e “p2” come DEN

• f1.num  restituisce la dimensione della matrice dei Numeratori della funzione di trasferimento “f1” (lavora in modo matriciale)

• f1.den  restituisce la dimensione della matrice dei Denominatori della funzione di trasferimento “f1” (lavora in modo matriciale)

• f1.num{1}  mi da i valori della prima riga della matrice dei Numeratori della funzione di trasferimento “f1”, ma nel caso in cui lavoriamo con gli scalari, ci darà il

NUM della “f1” scalare

• f1.den{1}  mi da i valori della prima riga della matrice dei Denominatori della funzione di trasferimento “f1”, ma nel caso in cui lavoriamo con gli scalari, ci darà il

DEN della “f1” scalare

• [n1,d1] = tfdata (f1,’v’)  mi assegna a “n1” e “d1” rispettivamente il NUM e il DEN della funzione “f1” (la ‘v’ serve per far visualizzare)

• root(f1.den{1})  mi da i poli della funzione “f1”

• f3=series(f1.f2) oppure f3=f1*f2  fa il collegamento in serie delle FdT “f1” e “f2”

• ws=feedback(f3,K)  fa la retroazione negativa (IN – y*K) con “f3” come catena diretta e “K” come valore del blocco in retroazione

• ws=feedback(f3,K,+1)  fa la retroazione positiva (IN + y*K) con “f3” come catena diretta e “K” come valore del blocco in retroazione

• bode(f1)  traccia il diagramma di Bode per il modulo e la fase

• [mag,phase]=bode(f1,w)  calcola i valori esatti di modulo e fase per le pulsazioni indicate nel vettore “w”. Nota che il modulo NON è in dB

• mdb=20*log10(mag)  calcola il modulo del diagramma di Bode in scala logaritimica

• w=logspace(-1,-2,100)  scrive in “w” un vettore di valori in scala logaritmica delle pulsazioni da 10 -1 a 10 -2 100 campioni

• nyquist(f1)  traccia il diagramma di Nyquist della funzione “f1”per pulsazioni positive e negative

• nichols(f1)  traccia il diagramma di Nichols della funzione “f1”

• margin(f1)  restituisce le pulsazioni di attraversamento dei margini di guadagno e di fase in forma testuale

 RISPOSTE:

• impulse(f1)  visualizza la Risposta Impulsiva della funzione “f1” in un grafico

Se la Risp Imp tende a zero significa che il DEN ha tutte radici a Re<0

• [y,t]= impulse(f1)  memorizzo i “y” le uscite e in “t” il vettore dei tempi

• step(f1)  la Risposta a un Gradino della funzione “f1” in un grafico

Se la Risp a Grad tende a un valore di regime significa che il DEN di “f1” ha tutte le radice a Re<0

• t=0:0.01:20  definisco un vettore che parte da 0 e arriva a 20 con passo 0.01 (2001 valori)

• u=sin(2*t).*exp(-t)  definisco “u” come una funzione a mio piacimento con prodotto elem per elem di diversi vettori riga della funzioni elementari che compongono la funzione composta

• y=lsim(f1,u,t)  simula la risp a un ingresso generico “u2” della FdT “f1”, con un vettore dei tempi predefinito da noi “t”

• plot(t,y)  grafico la risp “y” appena calcolata

 SPAZIO DI STATO:

• s1=ss(A,B,C,0)  crea un sistema lineare a partire dalla matrici A, B, C e D della rappresentazione in Spazio di Stato

• s1.a  scrive la matrice A dopo che ho definito il sistema lineare con il comando precedente

• ctrb(s1)  calcola la matrice di Raggiungibilità del sistema “s1”

Se tale matrice ha rango max il sistema s1 è Ragg

• obsv(s1)  calcola la matrice di Osservabilità del sistema “s1”

Se tale matrice ha rango max il sistema s1 è Oss

• [y,t,x]=impulse(s1)  calcola la risposta ad un Impulso come IN al sistema in SS “s1”

• [y,t,x]=initial(s1,x0)  imposta x0 come stato iniziale al sistema “s1”

• t=0:0.01:20  definisco un vettore che parte da 0 e arriva a 20 con passo 0.01 (2001 valori)

• [y,t,x]=lsim(s1,u,t)  calcola la risp all’ingresso generico “u” (esso deve essere di dimensioni compatibili con quelle del sistema in SS)

 PACCHETTI:

• ltiview o File  Import  scelgo la FdT da analizzare o Posso calcolare varie risp e grafici di analisi (come bode, nichols etc..) tra le

• sisotool opzioni accessibili dal menù sul tasto DX

 LINEARIZZAZIONE MODELLI:

• [X,U,Y,DX]=trim('nome_file:simulink_con_IN_OUT_generici_senza_ext')  associa a “X” e “U” i valori per i quali il sistema è in equilibro (sono delle matrici se ci sono più ingressi e più uscite)

• [a,b,c,d]=linmod(‘nome_file:simulink_senza_ext’,xe,ue)  realizza la linearizzazione di un modello costruito in Simulink, intorno ai punti di equilibrio “xe”, “ue” .

N.B. i parametri usati dal modello devono essere stati precedentemente definiti nel

WorkSpace.

Download