La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Introduzione a Matlab. Roadmap Saranno presentate le caratteristiche di base del sistema MATLAB TM (MATrix LABoratory) Operazioni elementari su scalari,

Presentazioni simili


Presentazione sul tema: "Introduzione a Matlab. Roadmap Saranno presentate le caratteristiche di base del sistema MATLAB TM (MATrix LABoratory) Operazioni elementari su scalari,"— Transcript della presentazione:

1 Introduzione a Matlab

2 Roadmap Saranno presentate le caratteristiche di base del sistema MATLAB TM (MATrix LABoratory) Operazioni elementari su scalari, vettori e matrici Script Funzioni Visualizzazione

3 Intro MATLAB è uno strumento di analisi dati e di visualizzazione largamente usato da ingegneri 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 Interfaccia grafica Inserimento comandi Modifica cartella di lavoro Chiusura Finestra Help Utilizzo comandi precedenti Barra separatrice (modificabile) Finestra di Workspace e Directory Inserimento comandi e funzioni

5 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 Trova e sostituisci stringhe Commenta le linee selezionate e specifica lo stile di formattazione nel menu Text 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

6 Comandi di recupero informazioni On-line help help argomento: 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 >> A(2,3) ans = 6 >> A(:,2) ans = 2 5 8 >> A' ans = 1 4 7 2 5 8 3 6 9 >> Ordine: prima righe, poi colonne Il carattere : viene utilizzato per indicare un intero intervallo (tutte le righe in questo caso) Matrice Trasposta

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 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 >> 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 >>

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)[u 1 (n+10)-u 1 (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)[u 1 (n+10)-u 1 (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 >> mentre: >> a=zeros(2,3) a = 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 >> 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 crea una matrice triangolare inferiore: >> a a = 1 0 0 0 1 1 0 0 1 1 1 0 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 >> 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 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: 1.Preparare un vettore di ascisse 2.Preparare un vettore di ordinate 3.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)')


Scaricare ppt "Introduzione a Matlab. Roadmap Saranno presentate le caratteristiche di base del sistema MATLAB TM (MATrix LABoratory) Operazioni elementari su scalari,"

Presentazioni simili


Annunci Google