Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoCornelio Di Stefano Modificato 8 anni fa
1
INTRODUZIONE A MATLAB Corso di Segnali e Sistemi a.a. 2010/2011
2
Che cos’è MatLab? Abbreviazione di MATrix LABoratory Software sviluppato da The Mathworks Nasce negli anni '80 come sottoprodotto dei progetti LINPACK ed EISPACK Originariamente realizzato esplicitamente per la manipolazione di matrici Attualmente in commercio è disponibile la versione R2010B
3
A cosa serve MatLab? Calcolo matriciale e vettoriale Signal Processing Identificazione di modelli Computer Vision Progettazione di controllori Simulazione di sistemi … e molte altre “discipline” ingegneristiche
4
Come appare MatLab Command Window WorkSpace Directory di lavoro
5
Come appare MatLab (2) Apre Simulink Help! Selezione directory di lavoro Nuovo file *.m
6
Interagire con MatLab Generalmente si inseriscono comandi Sulla Command Window: se si chiude l’applicazione si perde ciò che si è scritto! Su un m-file: si può salvare la sequenza di comandi! MatLab può essere visto come un linguaggio di programmazione ad alto livello
7
Primi comandi Definizione di una variabile scalare: >> a = 3 Sulla Command Window appare a = 3 Se scriviamo: >> a = 3; L’echo viene eliminato
8
Primi comandi (2) Definizione del vettore riga >> v = [1 2 5 7]; Definizione della matrice >> A = [1 3 6; 4 0.4 12]; Indica la fine di una riga
9
Primi comandi (3) MatLab gestisce anche numeri complessi: >> z = 3 + i*5;>> z = 3 + j*5; o i e j sono già predefinite come Attenzione a non sovrascriverle! >> r = real(z) >> w = imag(z) Parte reale e immaginaria del numero z >> m = abs(z) >> p = phase(z) Modulo e fase
10
Operazioni di base Somme tra vettori o matrici: >> C = A + B Prodotto tra vettori e/o matrici: >> C = A * B Attenzione alle dimensioni degli operandi
11
Operazioni di base (2) Prodotto componente per componente: >> C = A.* B Vale anche per la divisione (./ ) e l’elevamento a potenza (.^ ) Inversione di una matrice (quadrata a rango pieno): >> C = inv(A)>> C = A^(-1) Potenza di una matrice (p scalare qualsiasi): >> C = A^p o
12
Trasposizione: >> C = A’ Accostamento di matrici Se si scrive:si ottiene incolonnamento Selezione di un elemento (prima riga, seconda col.): Selezione di una riga intera Selezione di una colonna intera Operazioni di base (3) >> C = [A B] >> C = [A; B] >> c = A(1,2) >> C = A(2,:) >> C = A(:,1)
13
Selezione di una sottosequenza: Somma/prodotto degli elementi: Valore massimo: Somma di vettore e scalare Operazioni di base (4) >> w = v(2:6) >> w = v(1:2:7) >> s = sum(v)>> p = prod(v) >> [m, in] = max(v) >> s = v + 1; m = 6.1 in = 6 (indice del v. max)
14
Altri comandi >> t = 0:0.1:5 >> t = 0:5 >> zeros(m,n) Matrice m x n di zeri >> ones(m,n) Matrice m x n di 1 >> eye(n) Matrice identità di dim. n >> rank(A) Rango di una matrice >> eig(A) Autovalori >> find(t > n) Restituisce gli indici degli elementi maggiori di n (molto utile!)
15
Polinomi in MatLab Un vettore v si può associare ad un polinomio in 2 modi: v contiene i coefficienti del polinomio >> v = [1 2 3]; >> roots(v) v contiene le radici del polinomio >> v = [1 2 3]; >> poly(v)
16
Gestione variabili Ogni variabile è memorizzata nel workspace Alla chiusura di MatLab, si perde il lavoro! Per ispezionare il workspace: >> who >> whos Lista delle variabili del ws. Lista variabili con descrizione Elimina la variabile v Elimina tutte le variabili Salva il ws. nel file n_file.mat Salva in n_f.mat la var. v >> save n_file >> save n_f v >> clear v >> clear all
17
m-files MatLab gestisce file di estensione *.m Script: sequenza di comandi, si avviano dal workspace Funzione: riceve un input, restituisce un output >> nome_file Avvia il file nome_file.m >> [a, b, c] = fn(C,D) Richiama la funzione fn, che riceve due parametri in ingresso e ne restituisce tre.
18
Esempio di script A = eye(3); B = ones(3,3); C = A + B; disp(‘Calcolo autovalori di C’); lambda = eig(C) save autov C lambda
19
Esempio di funzione [C,lambda] = diagonalizza(A,B) C = A + B; lambda = eig(C); Il file.m della funzione deve avere il nome della stessa MatLab conclude automaticamente l’esecuzione del file Non è necessario dichiarare la tipologia di input/output Variabili in input Variabili output
20
Istruzioni per m-files Istruzione con condizione Cicli for e while if [condizione] [istruzioni] else [istruzioni] end for n=1:100 [istruzioni] end while [condizione] [istruzioni] end Condizioni “booleane” Es: a==4 (uguaglianza) a~=2 (diverso da) a>=2 (magg. eguale) isempty(a) (a vett. vuoto)
21
Esempi di funzioni MatLab >> sin(t) >> cos(t) >> exp(t) >> expm(A) >> log(t) Seno nei valori del vettore t Coseno Esponenziale Esponenziale matriciale Logaritmo Consultare l’help di MatLab per scoprire altre funzioni Digitare help nome_funzione per informazioni dettagliate su una data funzione
22
Creazione di grafici In MatLab sono implementate potenti funzioni grafiche Esempio: funzione plot >> t = 0:0.1:3; >> plot(t,sin(t)) Disegna la funzione seno nell’intervallo [1,3], con periodo di campionamento 0.1
23
Creazione di grafici (2) E’ possibile modificare il grafico con semplici comandi >> plot(t,sin(t),'r--o','Linewidth',2) >> grid on >> axis([-1 3 0 2]) >> title(‘Sinusoide’) >> xlabel(‘Tempo’) >> ylabel(‘Valore’) Output
24
Creazione di grafici (3) >> plot(t,sin(t),'r--o','Linewidth',2) Linea rossa tratteggiata, con “o” nei punti campionati Spessore linea = 2 >> grid on Griglia di sfondo >> axis([-1 3 0 2]) Assi cartesiani: da -1 a 3 per x, da 0 a 2 per y >> title(‘Sinusoide’) Titolo del grafico >> xlabel(‘Tempo’) >> ylabel(‘Valore’) Specifica la tipologia di ascissa e ordinata
25
Creazione di grafici (4) E’ possibile disegnare due grafici in un’unica figura Primo metodo >> plot(t,sin(t)) >> hold on >> plot(t,exp(t)) Secondo metodo (cambia i colori automaticamente) >> plot(t,sin(t),t,exp(t))
26
Creazione di grafici (5) Per non “sovrascrivere” due grafici nella stessa figura, digitare figure prima del secondo grafico Ogni finestra di grafico ha una barra strumenti: Salva figura Zoom grafico “Esplora” grafico Datatip: coordinate punto Edit figura: molto utile!
27
Creazione di grafici (6) Altri comandi per grafica: >> stem(t,sin(t)) >> stairs(t,sin(t)) Ottimo per segnali campionati Ottimo per segnali interpolati (zero-order holder)
28
Creazione di grafici (6) Scale logaritmiche (in base 10) >> semilogx(x,y) >> semilogy(x,y) >> loglog(x,y) Ascissa in scala logaritmica Ordinata in scala logaritmica Entrambe in scala logaritmica Esempio: >> semilogy(t,10.^(3*t))
29
Esercizio di riepilogo… Creare la funzione vect2mat.m che, dato un vettore (riga) di dimensione qualsiasi, esegue le seguenti operazioni: se la lunghezza del vettore è n < 16, aggiunge 16 - n zeri in coda al vettore, altrimenti ne prende i primi 16 elementi; crea una matrice 4x4 spostando gli elementi del vettore a quaterne; scrive sulla finestra di comando se è singolare (comando disp('[messaggio]'); ne calcola gli autovalori, li disegna sul piano complesso e scrive sulla finestra di comando se è una matrice "stabile"; trova gli autovalori reali; di questi, individua quello di modulo maggiore (detto l) e lo restituisce come output della funzione.
30
Testare la funzione vect2mat.m con uno script che esegue le seguenti istruzioni: genera un vettore riga composto da 2 numeri casuali compresi nell'intervallo [-1,3], utilizzando il comando rand (si faccia ricorso all'help); con un ciclo for allunga il vettore a 25 elementi: l'n-esimo elemento è generato dalla somma dei due precedenti (es: v(1)=1, v(2)=3 --> v(3)=4); richiama la funzione vect2mat.m dando come input il vettore creato; utilizza l'output l per disegnare il grafico di e^l*t, con t = [0:0.001:10], in un grafico con griglia, asse orizzontale da 0 a 10, asse verticale, da 0 a max(e^l*t + 1); nello stesso grafico disegna un gradino di ampiezza unitaria. Esercizio di riepilogo… (2)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.