1 / 40

Introduzione a Matlab

Introduzione a Matlab. Emanuele Maiorana Corso di Trasmissioni Numeriche. Roadmap. Saranno presentate le caratteristiche di base del sistema MATLAB TM (MATrix LABoratory) Operazioni elementari su scalari, vettori e matrici Script Funzioni Visualizzazione Demo Simulink. Intro.

ayoka
Télécharger la présentation

Introduzione a Matlab

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduzione a Matlab Emanuele Maiorana Corso di Trasmissioni Numeriche

  2. Roadmap • Saranno presentate le caratteristiche di base del sistema MATLABTM (MATrix LABoratory) • Operazioni elementari su scalari, vettori e matrici • Script • Funzioni • Visualizzazione • Demo • Simulink

  3. Intro MATLAB è uno strumento di analisi dati e di visualizzazione largamente usato da ingegneri elettronici e non per attività di ricerca e simulazione. MATLAB utilizza funzioni esattamente come script C (o C++), consentendo agli utilizzatori anche di crearne di propri. La differenza fondamentale dal C è che le funzioni MATLAB sono scritte specificatamente per operazioni su grandi array, e si basa su una rappresentazione vettoriale di ogni variabile. L’utilizzo di MATLAB, a differenza del C, utilizza pesantemente la memoria del computer, e i tempi di elaborazione sono molto elevati. Di contro, offre una facilità di utilizzo e una intuitività delle funzioni molto maggiore.

  4. Help Finestra di Workspace e Directory Modifica cartella di lavoro Chiusura Finestra Inserimento comandi e funzioni Inserimento comandi Utilizzo comandi precedenti Barra separatrice (modificabile) Interfaccia grafica

  5. Commenta le linee selezionate e specifica lo stile di formattazione nel menu Text Trova e sostituisci stringhe Impostando Breackpoints si può mettere in pausa i programmi durante l’esecuzione e valutarne l’andamento Tenendo il cursore su una variabile viene mostrato il suo valore attuale Edit window • Ambiente di editing degli M-files (scripts e functions) • Puo’ essere usato qualsiasi editor di testo • Matlab dispone di un text-editor integrato

  6. Comandi di recupero informazioni • On-line help • helpargomento: fornisce l’help sull’argomento indicato • helpwin: help interattivo completo • Workspace information • who, whos: elenca le variabili correntemente in uso • clear: rimuove tutte le variabili in uso • clear x,y,z • clear all • Directory information • pwd: mostra la directory di lavoro corrente • cd: cambia la directory di lavoro corrente • dir: mostra il contenuto della directory di lavoro corrente • ls: stesso comportamento di dir

  7. Inserimento comandi • Per inserire comandi, basta digitare il comando al prompt. • Es.1: • >> pi • ans = • 3.1416 • >> • Matlab crea una variabile ans a cui assegna il valore richiesto (in questo caso pi greco) • Es.2: • >> help DCT • DCT Discrete cosine transform. • Y = DCT(X) returns the discrete cosine transform of X. • The vector Y is the same size as X and contains the • discrete cosine transform coefficients. • Y = DCT(X,N) pads or truncates the vector X to length N • before transforming. • If X is a matrix, the DCT operation is applied to each • column. This transform can be inverted using IDCT. • See also fft, ifft, idct. • Reference page in Help browser • doc dct

  8. Grandezze Scalari Esempi di comandi >> 13*9 ans = 117 >> sqrt(167) ans = 12.9228 >> sin(pi/6) ans = 0.5000 >> i ans = 0 + 1.0000i La variabile ans viene utilizzata da MATLAB per la memorizzazione il risultato più recente non assegnato ad altre variabili i e j se non assegnate rappresentano l’unità immaginaria

  9. Assegnazione variabili Esempi di assegnazione scalari e vettori/matrici >> x=5.5 x = 5.5000 >> y=x^2 y = 30.2500 >> z=y-x z = 24.7500 >> a=[1 2 3 4 5 6] a = 1 2 3 4 5 6 >> b=[1 ; 2 ; 3 ; 4 ; 5 ; 6] b = 1 2 3 4 5 6 >> A = [1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 >>

  10. Operazioni sulle Variabili Operazioni fondamentali >>B = [ 1 2 3 4 5 6 7 8 9] B = 1 2 3 4 5 6 7 8 9 >> isequal(A,B) ans = 1 >> size(A) ans = 3 3 Si può utilizzare il tasto ENTER anche se l’espressione non è ancora completa, ma MATLAB non la esegue fino al suo completamento Funzione Booleana: restituisce 1 se le variabili sono uguali, 0 in caso contrario Restituisce le dimensioni della matrice, nell’ordine di righe e colonne

  11. Operazioni sulle Variabili Operazioni fondamentali Ordine: prima righe, poi colonne Il carattere : viene utilizzato per indicare un intero intervallo (tutte le righe in questo caso) Matrice Trasposta >> A(2,3) ans = 6 >> A(:,2) ans = 2 5 8 >> A' ans = 1 4 7 2 5 8 3 6 9 >>

  12. Operazioni sulle Variabili Operazioni fondamentali Matrice Inversa; può restituire errore nel caso di matrici singolari o quasi singolari Prodotto Righe per Colonne tra due matrici Prodotto Puntuale: si ottiene premettendo il carattere . all’operazione da realizzare. L’operazione viene effettuata elemento per elemento >> inv(A) ans = 1.0e+016 * 0.3152 -0.6304 0.3152 -0.6304 1.2609 -0.6304 0.3152 -0.6304 0.3152 >> A*B ans = 30 36 42 66 81 96 102 126 150 >> A.*B ans = 1 4 9 16 25 36 49 64 81

  13. Operazioni sulle Variabili Operazioni fondamentali >> A^2 ans = 30 36 42 66 81 96 102 126 150 >> A.^2 ans = 1 4 9 16 25 36 49 64 81 >> >> C = [1 2 3; 4 5 6] C = 1 2 3 4 5 6 >> C^2 ??? Error using ==> mpower Matrix must be square. >> C.^2 ans = 1 4 9 16 25 36 >> Esempio di operazione di potenza su una matrice. L’operazione può essere fatta direttamente solo nel caso di matrici quadrate Utilizzando l’operatore puntuale si ottiene l’operazione elemento per elemento

  14. Vettori e Matrici In MATLAB è importante ricordare che tutti i vettori sono indicizzati partendo da 1. x(1) Nel caso di sequenze con riferimento temporale assoluto sarà necessario prevedere un secondo riferimento dei tempi. Es.: x(n) = sin(n/2)[u1 (n+10)-u1(n-11)] >> nx = -10:10; >> x = sin(pi/2*nx) x = Columns 1 through 11 -0.0000 -1.0000 0.0000 1.0000 -0.0000 -1.0000 0.0000 1.0000 …

  15. Notazione a colonna • Il carattere : indica un ciclo implicito, usato per creare vettori: • >> x=1:5 • x = • 1 2 3 4 5 • >> • Si può introdurre anche un incremento non intero: • >> x=1:.1:2 • x = • 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000 • Es.: Visualizzare la funzione x(n) = sin(n/2)[u1 (n+10)-u1(n-11)]

  16. Matrici • Per inserire matrici, si usano parentesi quadre: • >> a=[2, 3; 1, 2] • a = • 2 3 • 1 2 • >> • Non e’ necessario dimensionare la matrice: la memoria richiesta e’ allocata automaticamente. • Per evitare la visualizzazione automatica della risposta è necessario • terminare il comando con un ; • >> a=[2, 3; 1, 2]; • >> • non produce nessun output.

  17. Matrici • E’ possibile costruire matrici automaticamente: • >> a=zeros(2) • a = • 0 0 • 0 0 • >> • mentre: • >> a=zeros(2,3) • a = • 0 0 0 • 0 0 0 • >> • Funzioni di Matlab (come zeros) accettano un numero variabile di elementi in input. • ones (genera matrici di 1) • rand (genera matrici di numeri casuali) • eye (genera le matrici identità)

  18. Operazioni su vettori Matlab esegue automaticamente le operazioni algebriche sulle matrici: • >> a=ones(2,3); • >> b=ones(2,3); • >> a+b • ans = • 2 2 2 • 2 2 2 • >> • o anche: • >> a=2*eye(2) • a = • 2 0 • 0 2 • >>

  19. Funzioni di matrici • >> a=zeros(1,2) • a = • 0 0 • >> b=cos(a) • b = • 1 1 • >> • Per calcolare una potenza invece devo agire sulle singole • componenti. Questo si ottiene con l’operatore . (punto): • >> x=[-1,2]; • >> x^2 • ??? Error using ==> mpower • Matrix must be square. • >> x.^2 • ans = • 1 4

  20. Funzioni di matrici • Per manipolare l’orientamento delle matrici si possono utilizzare le funzioni: • >> flipud(A) • ans = • 7 8 9 • 4 5 6 • 1 2 3 • >> fliplr(A) • ans = • 3 2 1 • 6 5 4 • 9 8 7 • >> rot90(A) • ans = • 3 6 9 • 2 5 8 • 1 4 7

  21. Operatori relazionali • Sono utilizzabili in MATLAB i seguenti operatori relazionali • == : uguale • ~= : diverso da • < : minore di • <= : minore o uguale • Esempio: • >> x = 2; • >> x == 0 • ans = • 0 >> x == 2 ans = 1 >> x ~= 3 ans = 1

  22. Operatori relazionali • Possono essere applicati anche alle matrici: • >> a=[1 2; 0 -1]; • >> a > 0 • ans = • 1 1 • 0 0 • >> a >= 0 • ans = • 1 1 • 1 0 • >>

  23. Cicli IF • Il ciclo basato su if ha la struttura: • if expression • statements • end • L’utilizzo di elseif necessita la seguente struttura • if expression1 • statements1 • elseif expression2 • statements2 • else • statements3 • end • Es.: • if ((attendance >= 0.90) && (grade_average >= 60)) • pass = 1; • end;

  24. Cicli FOR • Il ciclo for ha la struttura: • for variable = expression • statements • end • Di solito espressione è un vettore: • >> s=0; • >> for i=1:10 • s=s+i; • end • >> s • s = • 55 • >> • calcola la somma dei primi 10 numeri interi

  25. Cicli annidati • I cicli for possono essere uno dentro l’altro. Es.: • >> n=4; • >> for i=1:n • for j=1:i • a(i,j) = 1; • end • end • crea una matrice triangolare inferiore: • >> a • a = • 1 0 0 0 • 1 1 0 0 • 1 1 1 0 • 1 1 1 1 • Es.: • >> a = zeros(k,k) % Preallocate matrix • for m = 1:k • for n = 1:k • a(m,n) = 1/(m+n -1); • end • end • >> a • a = • 1.0000 0.5000 0.3333 • 0.5000 0.3333 0.2500 • 0.3333 0.2500 0.2000

  26. Cicli annidati • L’utilizzo dei cicli for, applicato su Matrici in MATLAB, è particolarmente pesante per l’elaborazione. • Esempio: utilizzo della funzione tic toc • >> tic; for i = 1:10ˆ6, sin(i);end; toc; • Elapsed time is … seconds. • >> tic; i=1:10ˆ6; sin(i); toc; • Elapsed time is … seconds.

  27. Cicli WHILE … END • Il ciclo while ha la seguente struttura • while expression • statements • end • Esempio • >> i=1; • >> while i<5 • i=i+1; • end • >> i • i = • 5 • Es.: • >> eps = 1; • while (1+eps) > 1 • eps = eps/2; • end • eps = eps*2 • >> eps • eps = • 2.2204e-016

  28. M-files • Un file .m è un programma riconoscibile da Matlab. • La scrittura di files .m permette di: • testare un algoritmo • ottenere una documentazione del lavoro svolto • riutilizzo dei programmi cambiando solo i dati • distribuzione del codice

  29. Scripts - Functions • Una funzione MATLAB è una parola di codice che accetta in ingresso diversi parametri, e restituisce degli output dopo un’elaborazione • Scripts M-files: sono files di comandi. Non hanno variabili in entrata e in uscita e operano sulle variabili del workspace • Function M-files: sono files di comandi, che hanno argomenti in entrata e in uscita. Le variabili interne a questi programmi non influenzano le variabili del workspace • Non assegnare a nessuno script o funzione il nome di funzioni predefinite o il nome di una variabile usata!!!

  30. Esempio % Script di esempio TSES_01_script.m % Disegno del valore assoluto della funzione sin(2*pi*freq*t) % su mille campioni equispaziati nell’intervallo t  [0,1). Tmax = 1; % Durata samples = 1000; % Numero campioni delta = Tmax / samples; % DeltaT freq = 1; t = 0:delta:Tmax-delta; s = abs(sin(2*pi*freq*t)); % for i = 1:samples; % t(i) = (i-1) * delta; % s(i) = abs(sin(2*pi*freq*t(i))); % end; plot (t,s); grid on; title('ABS(Sin)'); xlabel('Tempo (Sec.)'); ylabel('Ampiezza');

  31. Funzioni Funzione: si crea come uno script – ma concettualmente molto diversa!!! Il file contenente la funzione DEVE avere estensione .m e DEVE avere lo stesso nome della funzione La funzione puo’ ricevere e restituire dei risultati. Il passaggio dei parametri avviene per valore IMPORTANTE: le variabili definite all’interno della funzione hanno visibilita’ locale e NON possono essere riferite dalla shell Uso della dichiarazione global per l’utilizzo delle variabili nel Workspace su tutti i programmi

  32. Esempio • function [xmin,xmax]=minmax(a,m,n) • %MINMAX(A,M,N) calcola l'elemento minimo, XMIN, e l’elemento • % massimo, XMAX della matrice A con M righe ed N colonne • %xmin=-Inf; xmax=Inf; • for i=1:m • for j=1:n • if a(i,j) > xmax • xmax = a(i,j); • end • if a(i,j) < xmin • xmin = a(i,j); • end • end • end • Dove si trova l’errore nella funzione? • Come si può migliorarla passando solamente la matrice a?

  33. Dichiarazione di una funzione • function [out1,out2,…]=funz(in1,in2,….) • Gli argomenti in output vanno a sinistra dell’ =, fra [ ] • Gli argomenti in input vanno a destra dell’ = , fra ( ) • Posso usare un numero di argomenti minore di quello indicato nella definizione della function, sia in entrata che in uscita. • Es.: a=funz(b), assegna a “in1” il valore “b”, e ad “a” il valore “out1”

  34. Grafici • Per ottenere un grafico si devono effettuare i seguenti passi: • Preparare un vettore di ascisse • Preparare un vettore di ordinate • Fare il grafico • Esempio: grafico di cos(4x)*exp(x), su [0,2] • >> x=0:0.01:2; • >> f=cos(4*x).*exp(x); • >> plot(x,f) • Il comando figure crea una nuova finestra per immagini, consentendo di visualizzare diversi comandi plot

  35. Grafico di circonferenza • >> t=0:0.01:2*pi; • >> x=cos(t); • >> y=sin(t); • >> plot(x,y,'g+') • >> axis equal

  36. Grafico di Sinusoide • Questo esempio utilizza l’operatore colonna per creare una vettore di x valori inclusi tra 0 e 2, e successivamente ne calcola il seno, per poi graficare il risultato. • x = 0:pi/100:2*pi; • y = sin(x); • plot(x,y) • Lo script seguente edita gli assi della figura • xlabel('x = 0:2\pi') • ylabel('Sine of x') • title('Plot of the Sine Function','FontSize',12)

  37. Grafici Multipli • y2 = sin(x-.25); • y3 = sin(x-.5); • plot(x,y,x,y2,x,y3) • legend('sin(x)','sin(x-.25)','sin(x-.5)')

  38. DEMO • Matrici • Basic Matrix Operations • Matrix Manipulation • Integer Arithmetic Examples • Graphs and Matrices • Grafici • 2-D plots • 3-D plots • 3-D Surface Plots • Images and Matrices • Viewing a Penny • Quake • Toolboxes Communication • Bit Error Rate Analysis Tool (utilizzo di Simulink) • Eye Diagram and Scatter Plot • Signal Processing • Modulation/Demodulation

  39. Simulink • Simulink è un pacchetto software di MATLAB che fornisce le funzionalità necessarie per: • la modellizzazione • la simulazione • l’analisi dei sistemi dinamici • E’ in grado di supportare: • sistemi lineari e non lineari • sistemi tempo discreto, tempo continuo o ibridi. • I modelli necessari per le simulazioni sono realizzabili utilizzando i blocchi funzionali forniti da MATLAB, che sono anche modificabili per le esigenze degli utenti.

  40. Consigli fondamentali • Nella moltiplicazione di due matrici che rappresentano una immagine, fare attenzione a scrivere .* invece che *, dato che quest’ultimo sarebbe interpretato come moltiplicazione righe per colonne • Ricordarsi di inserire il carattere ; al termine di un comando, specialmente quando si lavora con immagini o video • Cercare di evitare il più possibile numerosi cicli for, e in special modo cicli annidati

More Related