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

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
Dipartimento di Matematica
Metodi numerici in Matlab
Introduzione a Matlab Gabriella Puppo.
PHP.
MATLAB Cristina Campi
MATLAB.
MATLAB.
Introduzione a MATLAB Stefano Vigogna Dipartimento di Matematica
MATLAB. Outline Grafica 2D Esercizi Grafica 3D Esercizi.
MATLAB.
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
MATLAB Stefano Gagliardo
Algoritmi e Programmazione
Introduzione a Matlab. Che cosa è Matlab Matlab è §un linguaggio di programmazione §un ambiente di calcolo scientifico con routines altamente specializzate.
1 a lezione - laboratorio a.a Corso di Laurea Ingegneria MECCANICA.
2 a lezione - laboratorio a.a Corso di Laurea Ingegneria MECCANICA.
3 a lezione - laboratorio a.a Corso di Laurea Ingegneria MECCANICA.
Operazioni elementari
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Funzioni definite dall’utente
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
Matlab Annalisa Massini Matlab.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
MATLAB. Annalisa Pascarella
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB. Annalisa Pascarella
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Introduzione a Matlab Gabriella Puppo. Che cosa è Matlab Matlab è §un linguaggio di programmazione §un ambiente di calcolo scientifico con routines altamente.
Soluzione FEM di problemi parabolici
Metodi FEM per problemi ellittici lineari a tratti Gabriella Puppo.
Metodi numerici per equazioni lineari iperboliche Gabriella Puppo.
Importazione di dati Nellambito dellutilizzo di qualsiasi software statistico una necessità è quella di importare dati esterni forniti dallutilizzatore.
Uso dei cicli y t =c+ty t-1 +e Un uso dei cicli può essere quello di creare una serie storica per cui y t =c+ty t-1 +e dove poniamo c e t scalari ed e~N(0,1).
Trimr Gauss, tra le altre, fornisce una preziosissima funzione che risulta di estrema utilità nell’ambito matriciale. Questa funzione, chiamata trimr(x,t,b),
Creazione di matrici Delimititatore di riga Delimititatore di matrice
Marco Panella MATLAB Marco Panella
Algebra matriciale e linguaggio matriciale in MATLAB
Esercitazione 2 – Generazione di variabili Matlab.
Corso di PHP.
INTRODUZIONE A MATLAB.
INTRODUZIONE A MATLAB LEZIONE 4 Sara Poltronieri slide3.4 matlabintro
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare in Matlab Funzioni di Libreria Funzioni definite.
Diagrammi 2D e 3D Funzioni di ordine superiore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Script 1 Marco D. Santambrogio – Ver. aggiornata al 2 Dicembre 2013.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente.
Lezione 1: Introduzione all’uso di Matlab
JavaScript Generalità Cos'è JavaScript?
Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente.
Analisi di Immagini e Dati Biologici Introduzione al linguaggio di MATLAB/OCTAVE Parte 2 16 L5.
Introduzione a Javascript
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Informatica Applicata al Suono Tutorial Matlab
DEI - Univ. Padova (Italia) Programmare Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Le istruzioni devono essere.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Laboratorio di Processi Stocastici Alberto Sorrentino
INTRODUZIONE A MATLAB LEZIONE 2 Sara Poltronieri.
ELABORAZIONE TESTI MICROSOFT WORD EM 09.
INTRODUZIONE A MATLAB Sara Poltronieri. Avvio del programma Avvio di Matlab (Windows) Start  Programmi  Matlab (o icona) Avvio di Matlab (Linux) terminale.
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
INTRODUZIONE A MATLAB Corso di Segnali e Sistemi a.a. 2010/2011.
Definizioni preliminari Sommario - Caratteristiche Principali – Assegnazione di variabili - Scrittura e manipolazione di matrici e vettori - Funzioni predefinite.
Transcript della presentazione:

Introduzione a Matlab

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

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.

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

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

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

Inserimento comandi Per inserire comandi, basta digitare il comando al prompt. Es.1: >> pi ans = >> 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

Grandezze Scalari Esempi di comandi >> 13*9 ans = 117 >> sqrt(167) ans = >> sin(pi/6) ans = >> i ans = i 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

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

Operazioni sulle Variabili Operazioni fondamentali >>B = [ ] B = >> 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

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

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 * >> A*B ans = >> A.*B ans =

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 = >> A.^2 ans = >> >> C = [1 2 3; 4 5 6] C = >> C^2 ??? Error using ==> mpower Matrix must be square. >> C.^2 ans = >>

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 …

Notazione a colonna Il carattere : indica un ciclo implicito, usato per creare vettori: >> x=1:5 x = >> Si può introdurre anche un incremento non intero: >> x=1:.1:2 x = Es.: Visualizzare la funzione x(n) = sin(n  /2)[u 1 (n+10)-u 1 (n- 11)]

Matrici Per inserire matrici, si usano parentesi quadre: >> a=[2, 3; 1, 2] a = >> 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.

Matrici E’ possibile costruire matrici automaticamente: >> a=zeros(2) a = 0 0 >> mentre: >> a=zeros(2,3) a = >> 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à)

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

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

Funzioni di matrici Per manipolare l’orientamento delle matrici si possono utilizzare le funzioni: >> flipud(A) ans = >> fliplr(A) ans = >> rot90(A) ans =

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

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

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;

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

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

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.

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 = e-016

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

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

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');

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

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?

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”

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

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

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)

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