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.