Introduzione al MatLAB

Presentazioni simili


Presentazione sul tema: "Introduzione al MatLAB"— Transcript della presentazione:

1 Introduzione al MatLAB
MATLAB: MATrix LABoratory Negli anni 60’ Cleve Moler, dell’Università del New Messico, iniziò lo sviluppo di un programma che fosse in grado di fornire un supporto semplice e veloce ai ricercatori che utilizzavano il calcolo matriciale. L’idea era di fornire un interprete in cui le funzioni elementari dell’algebra lineare fossero semplici comandi. Più precisamente potessero essere eseguite con un solo comando, non solo la somma ed il prodotto di matrici e vettori ma anche quelle funzioni più complesse quali l’inversione di matrici ed il calcolo di autovalori. Ma il vero punto di forza di MATLAB oggi è la vastissima collezione di programmi già fatti, raggruppati in toolboxes, per la soluzione di praticamente tutti i problemi numerici. Il numero di tali programmi continua ad aumentare in ogni nuova versione di MATLAB. Versione attuale versione utilizzata 6.5 completa

2 Introduzione al MatLAB-1
Che cosa `e Matlab? MATLAB `e un linguaggio ad alto rendimento per la computazione tecnica. Esso integra il calcolo, la visualizzazione e la programmazione in un ambiente di facile impiego in cui I problemi e le soluzioni sono espressi in notazione matematica familiare. E’ strutturato secondo il seguente schema: Matematica e calcolo. Sviluppo di procedura. Modellistica, simulazione e prototyping. Analisi di dati,esplorazione e visualizzazione. Disegno industriale e scientifico. MATLAB `e un sistema interattivo in cui l’elemento di base `e un array quindi non richiede il dimensioning.

3 Introduzione al MatLAB-2
una volta eseguito il doppio click sull’ icone vi appare la seguente schermata :

4 Introduzione al MatLAB-3
Quando si avvia il programma sul Desktop compaiono: 1.      sulla destra una finestra di comando (Command Window) per inserire i comandi; in alto a sinistra una finestra (Current Directory) per la scelta della directory in cui lavorare e salvare eventuali file. Quella di default è “C:\Programmi\MATLAB6p5\work”; sempre in alto a sinistra una finestra (Workspace) in cui sono visualizzate le variabili attualmente in uso; in basso a sinistra una finestra (Command History) in cui vengono memorizzati in sequenza tutti i comandi che sono stati digitati; in alto una barra di menù con diverse funzioni (File Edit Debug Desktop Window Help); :

5 Operazioni semplici Semplici operazioni possono essere svolte in linea : >>10 ^3,1416; >>15*17*0.5 >>1 / (attenzione provate ad aggiungere un ; a fine comando >> 1\ capite la differenza?) >>10+2

6 Operazioni semplici -1 Precedenze nelle operazioni : >>3 +7^2
>>(9/(0*(10+1))+3) ( quale delle due dà errore ?) >>(9/(0*(10+1)+3)) >> 7+3/3+7 ( =1 ?)

7 Costanti Speciali Alcune variabile sono “speciali in MatLab ed indicano un risultato non determinabile (infinito), oppure alcune derivano dal funzionamento del workspace : >>0/0 >> eps ( indica la precisione attuale) >>realmin ( il più piccolo floating-point, 2 –1022) >>realmax (il più grande floating-point,(2-e)2 1023)

8 Funzioni Matematiche Alcune variabile sono “speciali in MatLab ed indicano un risultato non determinabile (infinito), oppure alcune derivano dal funzionamento del workspace : >>sin (3.14) >>sinh(10)^2 - cosh(10)^2 >>sin(pi) >>tan(pi/2) >>angle(1+j*4) >> atan(1.6331e+016) >>abs(1+j*4) >>conj(1+4*j)

9 Variabili in MatLAb I nomi delle variabili (al max 32 caratteri) devono iniziare con una lettera. La parte restante può contenere anche cifre e “_”. Matlab è case-sensitive (fa distinzione tra maiuscolo e minuscolo). I comandi vanno inseriti dopo il prompt ( >> ) e una volta dato invio la riga su cui si è scritto è inutilizzabile. Bisogna ripartire dal nuovo prompt >>. Se si vuole dare un comando che è già stato inserito si può riscriverlo da capo o, più semplicemente, richiamarlo utilizzando le frecce   (Matlab memorizza ogni comando inviato). La procedura è molto utile quando si commettono errori di digitazione (si richiama la riga contenente l’errore, la si corregge utilizzando le frecce   e il backspace, e si da invio). >>a=3* >>b=10 >>a >>B=100 >>a=a-a >>a=B+b >> 10/a

10 Cambiamenti di Base Si possono velocemente convertire numeri da base 2 a 10 passando anche per l’esadecimale, interpretabile come codice ASCII :

11 Symbolic Math Toolbox Version 2.1.3 (R13)
Calcolo simbolico Questo tipo di calcolo è altamente sofisticato e consente di operare con simboli anziché numeri nella risoluzione di problemi (equazioni). >>ver Questo comando consente di verificare la presenza del toolbox Symbolic Math Toolbox Version (R13) questo ci consente di utilizzare i comandi che vedremo. date quindi il comando >>help sym SYM Construct symbolic numbers, variables and objects. S = SYM(A) constructs an object S, of class 'sym', from A. If the input argument is a string, the result is a symbolic number or variable. If the input argument is a numeric scalar or matrix, the result is a symbolic representation of the given numeric values. x = sym('x') creates the symbolic variable with name 'x' and stores the result in x. x = sym('x','real') also assumes that x is real, so that conj(x) is equal to x. alpha = sym('alpha') and r = sym('Rho','real') are other examples. Similarly, k = sym('k','positive') makes k a positive (real) variable. x = sym('x','unreal') makes x a purely formal variable with no additional properties (i.e., insures that x is NEITHER real NOR positive). See also: SYMS.

12 Calcolo simbolico-1 S=sym(x)
Costruisce un oggetto S di classe sym sulla variabile x Esempio operiamo con le frazioni : >>2/3 + 4/2 oppure possiamo scrivere >> sym(2/3)+sym(4/2) ans =8/3 Per dichiarare più variabilie simboliche si usa syms >> syms x y >> (x - y)*(x - y)ˆ Come si vede in effetti il risultato non è un numero ma un’espressione di x e y >> expand(ans) >>factor(ans)

13 Calcolo simbolico-2 Ulteriore esempio pensiamo a factor()
Restituisce una riga con i fattori primi di n >> f=factor(24) Quindi utilizziamo ora un’espressione del tipo >> syms x y z >> z=x^3-y^3; >>factor(z) Ora diamo il seguente comando >>simplify(z/(x-y)) Altri esempi , provate ancora con : >>z=(x^4+x^2*y^2+y^4) >>z=x^9-y^9

14 Variabili e assegnazioni
= è un operatore di equivalenza >> x = 7 Ogni qualvolta successivamente si presenta una x questa viene sostituita con il valore 7 >>sym y >> xˆ2 - 2*x*y + y la risposta è ottenuta utilizzando x come parametro di valore 7 per “pulire” il valore di x dare il comando >>clear x; >>syms x y

15 Risolvere equazioni Si possono risolvere equazioni che includono incognite utilizzando il comando solve (oppure fzero) per esempio l’equazioni : x2 − 2x − 4 = 0 >> solve(’xˆ2 - 2*x - 4 = 0’) >>solve('x^2-1=3') >>solve('x^3+3*x^2+3*x+1') (manca qualcosa ?) >> solve('x^3+x+2')

16 Risolvere sistemi Si possono risolvere sistemi di equazioni che includono incognite utilizzando il comando solve, separando con una virgola le rispettive equazioni. 3x+1 3x+2y Soluzione simbolica di equazioni algebriche >> solve('3*x+1','3*x+2*y') in questo caso essendo la soluzione un vettore riga [x,y] scriviamo >>[x,y]=solve('3*x+1','3*x+2*y') >>[x,y]=solve('3*x+y=0','3*x+y=4') >>[x,y]=solve('x^2+y=0','x-y=0')

17 Limiti E’ possibile con il calcolo simbolico risolvere anche limiti.
>>syms x; >>limit(sin(x)/x, x, 0) (per x 0) >>limit((x-2)/(x^2-4),2) (per x2) >>limit(1/x,x,0,'right') (per x0+) >> limit(abs(x)/x, x, 0, ’left’) (per x0-) >> limit((xˆ4 + xˆ2 - 3)/(3*xˆ4 - log(x)), x, Inf) (per xinf) Con soluzione simbolica come rapporto increentale >> limit((sin(x+h)-sin(x))/h,h,0)

18 Vettori e Matrici La killer application di MatLab sono i vettori.
E’ possibile fare tutte le operazioni con le matrici semplicemente con le notazioni che già usiamo in algebra. >> a = [1:4] è un vettore che contiene 1,2,3,4 passo 1 >> b = [1:3]; >> c = [ ] ; >> a+c (somma di vettori riga) >> a-c (differenza di vettori riga) >> a+b (attenzione)

19 Vettori-1

20 Matrici-1 Ora impariamo ad usare alcuni comandi con le matrici.
Creiamo una matrice 2x4 di soli zeri >>Z = zeros(2,4) Creaiamo una matrice 3x3 di 5 >>F = 5*ones(3,3) Generiamo una matrice casuale 3x6 >>G=rand(3,6) Moltiplichiamo F*G >>F*G >>G’*F’ >>N = fix(10*rand(1,10)) N = R = randn(4,4) R =

21 Matrici-2 Consideriamo il problema di risolvere un sistema N equazioni in N incognite, indichiamo con A la matrice dei coefficienti delle incognite e con B in vettore contenente i termini noti 2x + 3y = 11 x + 5y = 16 allora >>A = [2 3; 1 5]; >>B = [11 ;16]; Il sistema in notazione matriciale A*X = B la soluzione è : X = inv(A) * B; >>C=inv(A) >>X=C’*B ( bisogna trasporre la matrice inversa)

22 Matrici-2

23 Matrici-3

24 Matrici- altri comandi

25 Vettori-Altri comandi

26 M-files di MatLab I Files che contengono codice MATLAB sono chiamati M-files. Dopo aver creato un M-file usando un qualsiasi editor di testo, tale file può essere usato come un comando od una funzione MATLAB (senza dichiarare parole chiavi di libreria). Ci sono due generi di M-file: Scripts che non accettano argomenti d’entrata o argomenti di uscita. Loro operano su dati nel workspace. Functions che possono accettare argomenti d’entrata e argomenti di uscita, hanno variabili interne private.

27 M-files Script-1 Scripts che non accettano argomenti d’entrata o argomenti di uscita. Loro operano su dati nel workspace. Possiamo pensare di usare l’editor del Matlab MENU FILESNEWM-Files

28 Nella finestra digitare le linee e salvare come
M-files Script -2 Nella finestra digitare le linee e salvare come matrici_base da riga di comando MatLaB : >>matrici_base (verificare nel workspace le variabili)

29 M-files – Function Le Funzioni sono M-file che possono accettare argomenti d’entrata e forniscono argomenti di uscita. Il nome dell’M-file e della funzione deve essere lo stesso. Le Funzioni operano su variabili definite nel workspace proprio, separato dal workspace a cui si accede all’ingresso di MATLAB, cioé le variabili usate all’interno della funzione sono locali. Bisogna fare attenzione a non creare M-files con lo stesso nome di comandi MatLab, per cui consigliamo di dare nomi “intelligenti”. da riga di comando MatLaB : >>matrice_base (verificare nel workspace le variabili)

30 Digitare la funzione seguente e salvate come pippo
M-files – Function-1 Aprite di nuovo la finestra Files-New-M-file Digitare la funzione seguente e salvate come pippo

31 M-files – Function-2 Quindi per verificare il funzionamento di quanto fatto: >>clear (pulisce tutte le variabili del workspace) >>matrici_base >> pippo(k) >> pippo (id*5) >> pippo(id*9 +10) >> pippo(6)

32 M-files – WorkSpace In MatLab è possibile salvare in ogni momento tutte le variabili del workspace, semplicemente con il comando save e ripristinarle con il comando load. In questo caso il MatLab genera in automatico il file “matlab.mat” chiaramente è comodo ma allo stesso tempo rischioso se più utenti accedono allo stesso computer.

33 M-files

34 la pincipale funzione grafica è plot()
Funzioni e Grafici MATLAB ha estesioni facilitate per esporre vettori e matrici come grafici, così da poter annotare e stampare questi grafici. la pincipale funzione grafica è plot() >>t = 0:pi/100:2*pi; (crea un vettore t da 0 a 2π spaziato di pi/100) >>y = sin(t); (crea un vettore y come sin di t) >>plot(t,y) (grafica t e y ) ATTENZIONE plot esegue un’interpolazione lineare tra i dati, cioè collega i punti adiacenti con una retta.

35 Funzioni e Grafici -1 Cosa fa la funzione plot()
>> help plot PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix, then the vector is plotted versus the rows or columns of the matrix, whichever line up. If X is a scalar and Y is a vector, length(Y) disconnected points are plotted. PLOT(Y) plots the columns of Y versus their index. If Y is complex, PLOT(Y) is equivalent to PLOT(real(Y),imag(Y)).

36 plot(x,y, 'marcatore-stile-colore')
Funzioni e Grafici -2 Alcuni esempi : >>x=0:pi/50:2*pi; >>plot(x,y) ( cosa accade ?) Costruiamoci un altro vettore >> z=3*sin(t+pi/2); >> plot(t,z,'-g*') ( notate le differenze...) >>plot (t,y,’.r+’) plot(x,y, 'marcatore-stile-colore') dove il marcatore-stile-colore `e costiutito da una sequenza di 1 , 2 , o 3 caratteri (separati da virgolette)che rappresentano un colore, uno stile di linea , ed un tipo di marcatore;

37 ’c’, ’m’, ’y’, ’r’, ’g’, ’b’, ’w’, e ’k’
Funzioni e Grafici -3 plot(x,y, 'marcatore-stile-colore') tipi di colore sono: ’c’, ’m’, ’y’, ’r’, ’g’, ’b’, ’w’, e ’k’ Questi corrispondono a cyan, magenta, giallo, rosso, verde, azzurro, bianco, e nero. Stringhe di Linestyle sono: ’-’ per la linea continua ’- -’ per la linea tratteggiata ’:’ per una linea a puntini ’-.’ per una linea a puntini e tratteggio ’none’ senza linea. Tipi di marcatore comuni sono: ’+’, ’o’, ’*’, ’x’,’s’,’d’

38 plot(x,y, 'marcatore-stile-colore')
Funzioni e Grafici -4 plot(x,y, 'marcatore-stile-colore') >>w=(1/2)*sin(2*t); >> plot(t,w,'-bd') >> plot(t,y,'--ms') >> plot(t,z,'-.go') Come si vede il MatLab ricalcola la finestra grafica ogni volta.

39 plot(x,y, 'marcatore-stile-colore')
Funzioni e Grafici -5 plot(x,y, 'marcatore-stile-colore') Per sovrapporre uno o più grafici si utilizza il comando hold on >> plot(t,w,'-bd') >> hold on ( blocca il grafico precedente) >> plot(t,y,'--ms') >> plot(t,z,'-.go') >> hold off ( sblocca il primo grafico...)

40 Funzioni e Grafici -6 Per completare un grafico è necessario dare nome ad ascisse ed ordinate e titolare lo stesso grafico, si può altresì operare sempre con plot passandogli 2 funzioni da graficare. >>plot(t,y, '--ms‘,t,w,'-bd') >>grid on ( crea la griglia sotto il grafico) >>xlabel(‘angolo [rad]’) >>ylabel(’ampiezza[V]’) >>title(’Sinusoidi’) >>text(1.5,0.8,‘curva seno') (testo espicativo...) >>text(2,-0.6,’curva 0.5sin2x’)

41 Funzioni e Grafici -7 Inserire la griglia può essere utile per leggere meglio il grafico ed avere dei riferimenti, altrimenti difficili a video. Altro comando interessante è axis, che permette di definire il limiti degli assi, zoomando sulla parte che ci interessa. AXIS([XMIN XMAX YMIN YMAX]) sets scaling for the x- and y-axes on the current plot.

42 Funzioni e Grafici -8 Parliamo ora di sottografici e di esportazione grafica dei risultati : non è da escludere che i grafici siano utilizzabili in altri programmi (Word ad es.). Creiamo quindi un M-file, per comodità : MENU FILESNEWM-Files vogliomo creare un grafico particolare con due sottografici affiancati : subplot() >> subplot(2,2,1) (evidenzia un grafico su una matrice di grafici 2x2)

43 Funzioni e Grafici -9 Digitiamo m-file Grafico_001 e salviamolo

44 Funzioni e Grafici -10 Come salvare questo grafico, in maniera semplice : Combinazioni di tasti CTRL+ALT+PrtScr e poi CTRL-V su un editor Grafico Oppure utilizzare il comando di export >>print -djpeg90 picture1.jpg (crea il file picture1.jpg nella directory di lavoro)

45 Differenze ?

46 Grafici di“Complessi”
Quando i dati da plottare sono complessi,la parte immaginaria è ignorata eccetto quando il tracciato è dato da un singolo argomento complesso. Per questo caso speciale, il comando `e shortcut per tracciare la parte reale contro la parte immaginaria. Perci`o, >>Z=1+i*2 >> plot(z,'*r') è equivalente a >>plot(real(Z),imag(Z), '*r')

47 Grafici di“Complessi”-1
>>t = 0:pi/8:2*pi; >>plot(exp(i*t), ' -o ') Traccia un poligono di 16 lati con i cerchietti ai vertici se si vogliono visualizzare più numeri : >>y=3+i*2 >>x=-4+i*0.5 >>plot(real(x),imag(x),'*r',real(y),imag(y),'sg',real(z),imag(z),'.b') >> axis([ ])

48 Funzioni simboliche In MatLab è possibile valutare le funzioni :
>> sin(2*pi/3) darà come risultato , se lo vogliamo in forma esatta , non approssimata dobbiamo introdurre la forma simbolica della funzione : >> sin(sym(’2*pi/3’)) Il passaggio per il simbolico è necessario ogniqualvolta richiedo una soluzione esatta.

49 Funzioni inline Spesso è necessario definire delle funzioni di cui voliamo valutare in punti diversi. MatLab consente di definire delle funzioni inline , che sono degli oggetti che oltre ad avere una struttura, possono essere valutati . >>g = inline('t^2') è un oggetto – con una sua struttura >> g(90) dà il valore cercato Queste funzioni diventano interessanti se possiamo anche lavorare con la loro struttura

50 Funzioni inline-1 Il Matlab consente di collegare la funzione inline alla struttura della stessa : >>f=inline(‘x^2+1’,’x’) struttura della funzione in X >>f(0) valore dell’espressione in x=0 >>ezplot(f) grafica la funzione inline EZPLOT è differente da plot poichè quest’ultimo in pratica visualizza vettori o matrici, mentre EZPLOT in effetti disegna la funzione senza valori dove calcolarla.

51 Funzioni inline-2 Questa funzione inline può essere studiata :
sym x ; definiamo la variabile simbolica >> f=inline('x^2+1','x') la nostra funzione inline >>f1=diff(f(x)) diff calcola la derivata simbolica grafichiamo il tutto : >>subplot(1,2,1) >>ezplot(f) >>subplot(1,2,2) >>ezplot(f1)

52 Funzioni inline-3 Alcuni esempi per capire:
>> g=inline(‘sin(x)-cos(x)’,’x’) >> h= inline (‘atan(x)’,’x’) calcolarne le derivate prime e fare un grafico 2x2 con subplot

53 Funzioni inline-4 Altre possibilità sono il calcolo di integrali simbolici. >>syms x; variabile simbolica >>p=inline(‘exp(-x^2)’,’x’) ( di che curva si tratta ?) >> pt=int(p(x)) ( integrale indefinito) Grafichiamo il tutto >>subplot(1,2,1) >>ezplot(p) >>subplot(1,2,2) >>ezplot(pt)

54 Funzioni inline-5 Alcuni esempi per capire:
>> q=inline(‘1/(1+x^2)’,’x’) >> r= inline (‘acos(x)’,’x’) calcolarne la primitiva e fare un grafico 2x2 con subplot

55 Integrali definiti Chiaramente è altresì possibile valutare integrali definiti : Si tratta di un integrale in due variabili : >> syms x y ; variabili simboliche >> f= inline(‘x^2 +y^2’) definita la funzione >> int(f(x,y),y,0,sin(x)) integrazione della sola var y aggiungiamo la variabile x : >> int(int(f(x,y),y,0,sin(x)),x,0,pi)

56 Integrali definiti-1 Facciamo qualche altro esempio
Calcoliamoci gli integrali xy

57 [creiamoci un foglio excel]
Grafica avanzata Lo studio di un grafico è in MatLab elemento determinante, si tratta di costruire quindi un grafico rispondente alle nostre aspettative : Excel può essere utile a valutare una funzione in maniera semplice, certamente MatLab la sa più lunga sui grafici : [creiamoci un foglio excel] >>M=xlsread('esempio_excel.xls') >>M(1:3,:)=[] cancelliamo le prime 3 righe >>M(:,1:3)=[] cancelliamo le prime 3 colonne xy

58 un po’ povero come grafico ?
Grafica avanzata-1 Ora che abbiamo la matrice voluta possiamo passare al grafico: L’ideale per un campo vettoriale a simmetria cilindrica sono le curve di livello : >> help contour disegna le curve di livello >> contour(M) >>axis ([ ]) centriamo gli assi dove vogliamo un po’ povero come grafico ? xy

59 Grafica avanzata-3 Definiamo ora, controllando dalla finestra WORKSPACE, che l’ideale sarebbe graficare curve di livello ogni 500. definiamo il vettore >>c=[0::500:50000] >> contour(M,c) >>axis ([ ]) Molto meglio ! Come si vede l’apporssimazione del foglio Excel raggiunge i suoi limiti, allontanandoci la simmetrica è cilindrica, zoomando invece vediamo delle spezzate. xy

60 Grafica avanzata-4 Chiaramente è possibile definire, anche in MatLab le matrici importate con Excel. Vediamo un esempio simile : >> [X Y] = meshgrid(-3:0.1:3, -3:0.1:3); una MESH è una Matrice quadrata , o propriamente una griglia dove verrà valutata la funzione. >> contour(X, Y, X.ˆ2 + Y.ˆ2) >> axis square xy

61 Grafica avanzata-5 Volendo valutare solo alcune curve di livello :
>> contour(X, Y,(X.^2 + Y.^2),[1 2 4]) le curve 1 2 e 4 vengono visualizzate >>contour(X, Y,X.^2 + Y.^2,0:0.1:10) un po’ più densa.... Cambiamo la palette : >>colormap hot puff-puff ....che caldo >> colormap cool brrrrrrrrrr... >> colormap grey IBM-style xy

62 Grafica avanzata-5 Potrebbe essere interessante, come sia possibile disegnare dei diagrammi di campo : forze attrattive e repulsive tra cariche, campi magnetiche individuano linee di forza, non di equipotenzialità. Costruiamoci una griglia, di x e y tra –1.1 e 1.1 >>[x, y] = meshgrid(-1.1:.2:1.1, -1.1:.2:1.1); >> quiver(x,y) campo repulsivo >> quiver(x,-y) valico di montagna o p.to di sella >> quiver(x,y,x+y,-y) xy

63 Grafica 3d >>Help graph3d per avere un’idea
Diagrammi tridimensionali a linea plot3(x,y,z) Esempio Fare il grafico di: >> t=[0:pi/50:10*pi]; >> plot3(exp(-.05*t).*sin(t),exp(-.05*t).*cos(t),t) >> xlabel(‚asse-x'), ylabel(asse-y'), zlabel(asse-z'), grid xy

64 Diagrammi di Bode Consideriamo ora il problema della costruizione di questi diagrammi. Prendiamo ad esempio un filtro RC passa basso. >>t=0.01; % prodotto RC >>punti=100; >>freq=[0:1000/punti:1000] prendiamo freq. da 0 a 1000 costruiamoci il modulo della funz. di trasf. >>for i=1:punti+1 fdt(i)=1/(sqrt(1+(2*pi*t*freq(i))^2)); end xy

65 Diagrammi di Bode-1 >>plot(freq,fdt) non è propriamente un diagramma di bode va inserita la scala logaritmica sull’asse x ed y >>plot(log(freq),20*log(fdt)) Oppure : >>help semilogy >>help loglog >>loglog(freq,fdt) >>grid on xy

66 Diagrammi di Bode-2 E’ possibile inoltre modificare il grafico direttamente da finestra, vediamo come : EDITAXES PROPETIES xy

67 Diagrammi di Bode-3 SCALE LOG xy

68 Diagrammi di Bode-4 per quanto concerne la fase
La fase varia come : -arctan(2*pi*f*RC) >>for i=1:punti+1 ph(i)=-atan(2*pi*freq(i)*t); end >>plot(freq,ph) in radianti >>plot(freq,ph*180/pi) in gradi, bisogna inoltra cambiare la scala della x xy

69 La funzione Bode Chiaramente il MatLab dispone già di funzione adatte a migliorarci la vita. Data la seguente Vogliamo calcolarne il modulo e la fase. >>help Bode % in questo caso non ci viene in aiuto... xy

70 La funzione Bode-1 Dividiamo la funzione in Numeratore N e Denominatore D Scriviamola ora parametricamente come fossero coefficienti di polinomi in S. [coefficenti di N ] * [Sn Sn S3 S2 S1 S0]T [coefficenti di D ] * [Sn Sn S3 S2 S1 S0]T N = 0*S + 10 D = S3 +3S2 +3S1 +S0  è un cubo di un binomio! xy

71 La funzione Bode-2 N = 0*S + 10 D = S3 +3S2 +3S1 +S0
>>N = [10] vettore dei coeff. del numeratore >>D=[ ] vettore dei coeff. del denominatore >>figure >>grid >>bode(N,D) xy

72 La funzione Bode-3 E’ altresì possibile farsi restituire dalla funzione direttamente i valori per il plotting. >>[pulsazione,modulo,fase]=bode(N,D); il modulo è in scala naturale la fase è in gradi la pulsazione è in rad/s >> figure; plot(pulsazione,20*log10(modulo));grid modificare con AXIS propieties X deve essere logaritmica come visto pocanzi. xy

73 La funzione Bode-4 Se invece volessimo definire il vettore pulsazione sul qual la funzione Bode plotta il grafico ? >>pulsmin=0.1; >>pulsmax=10; >>quanti=100 >>w=[pulsmin:(pulsmax-pulsmin)/quanti:pulsmax] >>[modulo,fase,pulsazione]=bode(N,D,w); >> figure; plot(pulsazione,20*log10(modulo));grid xy

74 La funzione Bode-4 Se invece volessimo definire il vettore pulsazione sul qual la funzione Bode plotta il grafico ? >>pulsmin=0.1; >>pulsmax=10; >>quanti=100 >>w=[pulsmin:(pulsmax-pulsmin)/quanti:pulsmax] >>[modulo,fase,pulsazione]=bode(N,D,w); >> figure; plot(pulsazione,20*log10(modulo));grid xy

75 La funzione Bode-5 Se vogliamo determinare il segnale :
Vi=15-3sin(0,5t) in uscita Vo Vi è composta da 2 segnali : uno a pulsazione zero 15 uno a pulsazione 0,5 con modulo 3 controfase calcolo modulo e fase a pulsazione zero >>[mod1,arg1,puls1]=bode(N,D,0) >>[mod2,arg2,puls2]=bode(N,D,0) xy


Scaricare ppt "Introduzione al MatLAB"

Presentazioni simili


Annunci Google