Matlab. Ing. Francesco Licandro. Corso Fondamenti di Telecomunicazioni A.A. 2004-2005



Documenti analoghi
Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

Introduzione al MATLAB c Parte 2

Finestre grafiche. >> figure >> figure(n)

INTRODUZIONE A MATLAB

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Script. Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 13 Agosto 2014

Dati importati/esportati

INTRODUZIONE A MATLAB Matrix Laboratory

L utility Unix awk [Aho-Weinberger-Kernighan]

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Laboratorio Algoritmi 2014 Secondo Semestre

Matlab: Gestione avanzata dei file

Grafici tridimensionali

Laboratorio di Matlab

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Stream EDitor (sed) sed NON modifica l'input 2. L'output viene inviato allo standard output e puo' essere rediretto

Laboratorio di Matematica Computazionale A.A Lab. 1 - Introduzione a Matlab

SISTEMI DI CONTROLLO Ingegneria Meccanica e Ingegneria del Veicolo

Matlab: Strutture di Controllo. Informatica B

Tutorial di Matlab. Davide Manca Calcoli di Processo dell Ingegneria Chimica Politecnico di Milano

Fogli Elettronici: MS Excel

Lezione 5. Fogli di calcolo

Gestione dei File in C

Introduzione al MATLAB c Parte 1

Comandi di Input/Output in Matlab

l Editor vi vi (visual editor) è stato scritto per essere utilizzabile con qualsiasi tipo di terminale.

Lezioni su MATLAB. Ingegneria Civile/Meccanica

Richiesta pagina PHP (es: index.php)

Definire gli attributi dei blocchi

Introduzione a MATLAB. Il Laboratorio. MATLAB Cos è? Oltre alle lezioni. Octave ( ) Scilab ( )

Informatica Applicata al Suono Tutorial Matlab

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica

Introduzione a MATLAB INTRODUZIONE A MATLAB

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

MATLAB (1) Introduzione e Operazioni con array

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

FONDAMENTI DI INFORMATICA. 3 Elaborazione testi

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

Introduzione al Linguaggio C

Introduzione a Matlab

Il foglio elettronico: Excel

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel

Corso di Informatica. Immissione di dati. Visualizzazione come foglio dati 1. Visualizzazione come foglio dati 2 11/01/2008

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

Microsoft Excel. Il foglio elettronico Microsoft Excel Cartelle, Fogli di lavoro e celle Contenuto delle celle. Numeri, date, formule, testo, funzioni

Utilizzo delle formule in Excel

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

I Fogli di Calcolo. Fogli di Calcolo

NOZIONI BASE SHELL E SCRIPT LINUX

STAMPA UNIONE DI WORD

Cos è Excel. Uno spreadsheet : un foglio elettronico. è una lavagna di lavoro, suddivisa in celle, cosciente del contenuto delle celle stesse

Rapida Introduzione all uso del Matlab Ottobre 2002

Fogli Elettronici: MS Excel. Foglio Elettronico

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Introduzione al Python

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Alcune regole di base per scrivere un programma in linguaggio C

Esercizio 1. Esercizi 5. Esercizio 3. Esercizio 2 CICLI

Cosa è un foglio elettronico

GLI SCRIPT DI SHELL. Lucidi a cura di B.De Carolis. UNIX shell script UdB- Dip Informatica

Introduzione al Foglio Elettronico

Come costruire una distribuzione di frequenze per caratteri quantitativi continui

Corso di Visione Artificiale. Matlab per Visione. Samuel Rota Bulò

Visualizzazione grafica. dell'output di un programma con GNUplot

1. Le macro in Access 2000/2003

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Fogli elettronici Ferro Alluminio Piombo Oro

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Advanced level. Corso Matlab : Samuela Persia, Ing. PhD.

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Laboratorio di Informatica

MICROSOFT WORD LA STAMPA UNIONE

Foglio Elettronico. Creare un nuovo foglio elettronico Menu File Nuovo 1 clic su Cartella di lavoro vuota nel riquadro attività

FH-SY capitolo Versione 3 - FH-SY.NET - FAQ -

Lab. 1 - Introduzione a Matlab

Microsoft Access Maschere

Utilizzo del Terminalino

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Word è un elaboratore di testi in grado di combinare il testo con immagini, fogli di lavoro e

La grafica. La built-in funzione grafica plot. x spezzata poligonale. discretizzato

COSTRUIRE UN CRUCIVERBA CON EXCEL

NOZIONI BASE PER ESERCITAZIONI

EXCEL FINESTRA DI EXCEL BARRE PRINCIPALI CARTELLA DI LAVORO BARRE DI SPOSTAMENTO

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

4. Operazioni elementari per righe e colonne

Scopo dell esercitazione

Scilab: I Polinomi - Input/Output - I file Script

MS Word per la TESI. Barra degli strumenti. Rientri. Formattare un paragrafo. Cos è? Barra degli strumenti

8.9 CREARE UNA TABELLA PIVOT

Introduzione. Macro macro istruzione. Sequenza di comandi memorizzati programma

Gestione dei File. dischi nastri cd

Calcolare il massimo di una lista

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

Manuale swiss-archives.ch

L ACQUISIZIONE E LA GESTIONE DEI DOCUMENTI ELETTRONICI

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Introduzione allo Scilab Parte 3: funzioni; vettori.

La Stampa Unione. Individuare la lista indirizzi per la Stampa Unione

Transcript:

Matlab Ing. Francesco Licandro Corso Fondamenti di Telecomunicazioni A.A. 2004-2005 1

MATLAB: MATrix LABoratory Matlab Ing. Francesco Licandro - 2005 2

Interfaccia Grafica Matlab Ing. Francesco Licandro - 2005 3

Struttura dell ambiente MATLAB Command Window (o Shell) Finestra Principale Prompt >> Usata per eseguire comandi, lanciare script, etc Graphic Window Contiene l output dei comandi grafici 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 Matlab Ing. Francesco Licandro - 2005 4

MATLAB windows Matlab Ing. Francesco Licandro - 2005 5

Comandi generali On-line help help argomento : fornisce l help su argomento helpwin: help interattivo Workspace information who, whos: elenca le variabile correntemente in uso clear: rimuove tutte le variabili in uso clear x,y,z: rimuove le variabili x,y,z Directory information pwd: mostra la directory di lavoro corrente cd: cambia la directory di lavoro corrente dir: mostra il contenuto della dir. di lavoro corrente ls: ---- come dir ----- Matlab Ing. Francesco Licandro - 2005 6

Operazioni su scalari >> 13*9 ans = 117 >> sqrt(167) ans = 12.9228 >> sin(pi/6) ans = 0.5000 NOTA: pi=3.1415 i,j se non assegnate rappresentano l unita immaginaria. >> i ans = 0 + 1.0000i >> complex(real,imag); NOTA: variabile ans Contiene il risultato piu recente Matlab Ing. Francesco Licandro - 2005 7

Creazione di una matrice Elemento per elemento >>A = [1 2 3 4; 5 6 7 8]; Chiamata a funzione >>B = zeros(10,2); Che succede se si toglie il ;? Da file testo >>C = load( dati.txt ); Spazio di lavoro >>who >>whos Matlab Ing. Francesco Licandro - 2005 8

Assegnazione di variabili >> x = 5.5; >> y = x^2; >> 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; ] b = 1 2 3 4 5 >> A = [1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 Matlab Ing. Francesco Licandro - 2005 9

Arrotondamenti Domanda: come si determina la parte intera di un numero in virgola mobile? Risposta: provare i seguenti comandi di Matlab : fix, round, floor, ceil. Esempio: >>x = [-5.8, -3.2, -2.5, 0., 0.5, 2.1, 3.9] >>fixx = fix(x) >>roundx = round(x) >>floorx = floor(x) >>ceilx = ceil(x) Output: x = -5.8-3.2-2.5 0 0.5 2.1 3.9 fixx = -5-3 -2 0 0 2 3 roundx = -6-3 -3 0 1 2 4 floorx = -6-4 -3 0 0 2 3 ceilx = -5-3 -2 0 1 3 4 Matlab Ing. Francesco Licandro - 2005 10

Help di Matlab Per eseguire l help di Matlab, scriver nella shell dei comandi: >> help E possibile eseguire l help di una funzione scrivendo help nomefunzione. ad esempio: >> help inv Matlab Ing. Francesco Licandro - 2005 11

Variabili predefinite i, j pi Inf NaN sin, cos, tan, asin, acos sinh, cosh, asinh, acosh sqrt, log, log10, exp rem unità immaginaria Pigreco infinito (ad es.: 3/0) not a number (as es.: 0/0, Inf/Inf) funzioni trigonometriche (in radianti) funzioni iperboliche funzioni varie resto della divisione intera (divisione modulo) Matlab Ing. Francesco Licandro - 2005 12

Operatori elementari Trasposta >>B = A ; Determinante, rango, inversa >>B = det(a); >>C = rank(a); >>D = inv(a); Dimensione >>size (A,1) >>size (A,2) >>length(a) Matlab Ing. Francesco Licandro - 2005 13

Operatori di intervallo In cui si specifica l incremento >>1:10 >>1:2:10 >>10:-1:1 In cui si specificano gli estremi e/o il numero di elementi >>linspace(1,100,10) >>help linspace >>logspace(1,2,10) >>help logspace Matlab Ing. Francesco Licandro - 2005 14

Operatori di confronto Operatori di confronto: < minore <= minore o uguale > maggiore >= maggiore o uguale == uguale ~= diverso Operatori logici: ~ NOT & AND OR Matlab Ing. Francesco Licandro - 2005 15

Caratteri speciali I simboli possono essere creati utilizzando la combinazione del tasto ALT e il tastierino numerico. Ad esempio: per produrre il simbolo: { premere ALT + 123 (tastierino numerico) per produrre il simbolo: } premere ALT + 125 (tastierino numerico) per produrre il simbolo: premere ALT + 124 (tastierino numerico) per produrre il simbolo: ~ premere ALT + 126 (tastierino numerico) Matlab Ing. Francesco Licandro - 2005 16

Elementi e sottomatrici Come accedere a singoli elementi di una matrice: >>A(1,3) % Visualizza l elemento della prima riga e terza colonna Tecniche per definire sottomatrici: >>A(1:2,1) >>A(:,1) >>A([1 3 5],1) >>A([5 3 1],1) Matlab Ing. Francesco Licandro - 2005 17

Cancellare righe e colonne Si possono cancellare righe o colonne da una matrice utilizzando luna semplice istruzione: Esempio Per cancellare la seconda riga della matrice X: X(2,:)=[] Analogamente per cancellare una colonna: X(:,3)=[] Matlab Ing. Francesco Licandro - 2005 18

Dimensione di una matrice o vettore Domanda: come determinare il numero di righe e colonne di una matrice? Risposta: occorre utilizzare l istruzione size. Esempio: >>A = zeros(3,5) >>nrows = size(a,1); >>ncols = size(a,2); >>disp(['nrows = ',num2str(nrows),' ncols =,num2str(ncols)]); Output: A = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 nrows = 3 ncols = 5 Matlab Ing. Francesco Licandro - 2005 19

Vettori, indici e tempi In MATLAB tutti I vettori sono indicizzati partendo dall indice x(1) 1 Nel caso di sequenze con riferimento temporale assoluto sarà necessario prevedere un secondo vettore dei tempi Matlab Ing. Francesco Licandro - 2005 20

Operazioni con matrici Matlab Ing. Francesco Licandro - 2005 21

Rappresentazione grafica di vettori Essenzialmente si usano tre funzioni per graficare: plot: rappr. di tipo continuo o per punti stem: rappr. a impulsi (tipica per sequenze) bar: diagramma a barre (tipico di istogrammi) Per ulteriori opzioni: >> help plot (ovvero help stem, help bar) Se invocate con un solo argomento (vettore), graficano i valori degli elementi del vettore rispetto all indice Se gli argomenti (vettori) sono due, utilizzano il primo come indice (ascissa) e il secondo per i valori (ordinata) Matlab Ing. Francesco Licandro - 2005 22

Eempio 1 Matlab Ing. Francesco Licandro - 2005 23

Gestione delle figure Di default MATLAB ridirige l output dei comandi grafici sulla figura creata piu recentemente (all inizio, Figure n.1) >> figure crea una nuova figura e vi dirige l output >> figure(n) dirige l output sulla figura N (la crea se non esiste) >> hold on sovrappone grafici sull ultima figura attivata >> subplot(r,c,i) o subplot rci suddivide la figura corrente in una matrice di sottografici a r righe e c colonne e attiva il sottografico i-esimo (contando per righe) Matlab Ing. Francesco Licandro - 2005 24

Subplot Domanda: come disegnare con Matlab quattro diagrammi in un unica finestra? Risposta: si utilizza l istruzione subplot(n,m,i) che permette di disegnare n righe ed m colonne di diagrammi puntando nella fattispecie sul diagramma i-esimo contando da sinistra a destra e dall alto in basso. Esempio: subplot(2,2,1); % 4 diagrammi (2 x 2), inizio a puntare al #1 plot(x1,y1),title diagramma 1'; subplot(2,2,2); % punto al #2 plot(x2,y2),title diagramma 2'; subplot(2,2,3); % punto al #3 plot(x3,y3),title diagramma 3'; subplot(2,2,4); % punto al #4 plot(x4,y4),title diagramma 4'; Nota: il carattere % permette di inserire dei commenti nello script Matlab Ing. Francesco Licandro - 2005 25

Marcatori stile-colore E possibile specificare, colore, stile della linea e marcatori, attraverso il seguente comando: plot(x,y, marcatore-stile ) dove marcatore-stile rappresenta la sequenza di 1, 2 o 3 caratteri che indicano rispettivamente: Colore Stile linea marcatore Matlab Ing. Francesco Licandro - 2005 26

Stili e marcatori - Tipi di colore: c, m, y, r, g, b, w, k - Stile linea: - linea continua - - linea tratteggiata : linea a punti -. liena tratti e punti none senza linea - tipi di marcatore: +, o, *, ^, x Esempio: plot(x,y, y:+ ) Traccia una linea in giallo a puntini e pone un marcatore + a ciascun dato Matlab Ing. Francesco Licandro - 2005 27

Esercizio 1 Matlab Ing. Francesco Licandro - 2005 28

Esercizio 2 Matlab Ing. Francesco Licandro - 2005 29

Esercizio Problema: Costruire una matrice A (10000x1) i cui elementi sono tutti uguali e pari al contenuto della variabile b (1x1). Soluzione: >>b = 3; >>A = ones(10000,1)*b; Matlab Ing. Francesco Licandro - 2005 30

Simboli e caratteri speciali Lettere greche minuscole Lettere greche maiuscole Simboli matematici Matlab Ing. Francesco Licandro - 2005 31

Esempio di caratteri speciali Domanda: come si fa a mostrare i caratteri speciali nelle scritte (ad esempio titolo ed assi di un diagramma)? Risposta: si utilizzano i caratteri speciali TeX che premettono un carattere di backslash Esempio: >>plot(xf,yf, r-') >>title('funzione \alpha ); % lettera greca alfa Matlab Ing. Francesco Licandro - 2005 32

Assegnazione stringhe Domanda: esiste un modo per memorizzare una informazione in una variabile di tipo stringa? Risposta: Sì. È molto semplice. Basta assegnare la stringa alfanumerica tra virgolette semplici ad una nuova variabile. Esempio: >>unastringa = Soluzione non accettabile ; >>messaggio = Il programma abortisce per una grave errore. ; >>disp(unastringa); >>disp(messaggio); Matlab Ing. Francesco Licandro - 2005 33

Matrici sparse >>[i,j,s]=find(a) Trova elementi non nulli in A Matrice sparsa: con molti elementi nulli. Può essere memorizzata in modo più parsimonioso semplicemente elencando gli elementi non nulli Da matrice completa a matrice sparsa: >>[i,j,s] = find(a),s = sparse(i,j,s) >>S = sparse(a) Da matrice sparsa a matrice completa: >>A = full(s) Matlab Ing. Francesco Licandro - 2005 34

Soluzione di sistemi di lineari Problema: Soluzione di un sistema lineare Ax = b MATLAB: x = A/b Matlab Ing. Francesco Licandro - 2005 35

I/O data file ASCII dlmread dlmwrite Con carattere delimitatore csvread csvwrite Valori separati da virgola wk1read wk1write Lotus 1,2,3 (WK1) Worksheet load save File ASCII generici xlsread xlsread Excel (XLS) file. Matlab Ing. Francesco Licandro - 2005 36

Comandi I/O a basso livello per file ASCII fopen Apre un file fscanf Legge dati formattati da un file fprintf Scrive dati formattati su un file fgetl Legge linea da file, scartando il carattere newline ftell Ritorna la posizione corrente fseek Specifica la posizione corrente fclose Chiude un file Matlab Ing. Francesco Licandro - 2005 37

Esempio: lettura file ASCII fid = fopen(filen,'r'); h.date = fscanf(fid,'%s\n',1); h.tgsize = fscanf(fid,'%f\n',1); h.tgampl = fscanf(fid,'%f\n',1); h.trials = fscanf(fid,'%d\n',1); h.targets = fscanf(fid,'%d\n',1); h.tgvisible = fscanf(fid,'%s\n',1); h.handvisible = fscanf (fid,'%s\n',1); h.l = fscanf(fid,'%f\n',2); h.distances = fscanf(fid,'%f\n',4); fclose(fid); Matlab Ing. Francesco Licandro - 2005 38

File binari in formato MAT MAT è un formato binario MATLAB indipendente dalla piattaforma, usato per memorizzare una o più variabili dello Workspace save <nome file> < variabile> Salva file in formato MAT load <nome file> Legge file in formato MAT Matlab Ing. Francesco Licandro - 2005 39

Comandi di I/O a basso livello per file binari fopen Apre un file fread Legge da file binario fwrite Scrive file binario fseek Specifica indicatore di posizione ftell Ritorna la posizione corrente fclose Chiude file Matlab Ing. Francesco Licandro - 2005 40

Esempio: lettura di file binari fid = fopen(fname,'r','b'); data = fread(fid,inf,'float32'); data= reshape(data,3,length(data)/3)'; fclose(fid); Matlab Ing. Francesco Licandro - 2005 41

Script File File contenente una sequenza di comandi MATLAB, interpretati dalla shell come se fossero digitati manualmente Tipicamente viene salvato con estensione.m Uno script viene eseguito digitando al prompt della shell il nome dello script stesso NON assegnare a nessuno script il nome di funzioni predefinite o il nome di una variabile usata!!! IMPORTANTE: le variabili definite all interno dello script hanno visibilita globale e possono essere riferite dalla shell Matlab Ing. Francesco Licandro - 2005 42

Strutture di controllo di flusso MATLAB ha cinque strutture di controllo di flusso: If Switch For While break Matlab Ing. Francesco Licandro - 2005 43

Struttura if La struttura if valuta un espressione logica ed esegue un gruppo di asserzioni quando l espressione è vera. La parola end termina il gruppo di asserzioni. Esempio If A > B Greater elseif A < B less elseif A==B equal else error( Unexpected situation ) end Matlab Ing. Francesco Licandro - 2005 44

Struttura Switch e case La struttura switch esegue gruppi di asserzioni sul valore di una variabile o espressione. La keywords case o otherwhise delimita i gruppi Esempio switch lower(method) case {'linear','bilinear'} disp('method is linear') case 'cubic' disp('method is cubic') case 'nearest' disp('method is nearest') otherwise disp('unknown method.') end Matlab Ing. Francesco Licandro - 2005 45

Struttura for Il loop for ripete un gruppo di istruzioni un numero fisso di volte. Un end termina le asserzioni. Esempio for I = 1:N, end for J = 1:N, A(I,J) = 1/(I+J-1); end Matlab Ing. Francesco Licandro - 2005 46

Struttura while Il ciclo while ripete un gruppo di asserzioni un numero indefinito di volte attraverso il controllo di una variabile. Un end delinea le asserzioni Esempio E = 0*A; F = E + eye(size(e)); N = 1; while norm(e+f-e,1) > 0, E = E + F; F = A*F/N; N = N + 1; end Matlab Ing. Francesco Licandro - 2005 47

Comando break L asserzione break lascia che si esca da un loop for o while anche se non è verificata l espressione del loop. Esempio E = 0*A; F = E + eye(size(e)); N = 1; while norm(e+f-e,1) > 0, E = E + F; F = A*F/N; N = N + 1; if N >= 5 N maggiore di 5 break end end Matlab Ing. Francesco Licandro - 2005 48

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 può ricevere e restituire dei risultati. I passaggi di parametri avvengono per valore IMPORTANTE: le variabili definite all interno della funzione hanno visibilità locale e NON possono essere riferite dalla shell Matlab Ing. Francesco Licandro - 2005 49

Bibliografia http://www.eece.maine.edu/mm/matweb.html http://spicerack.sr.unh.edu/~mathadm/tutorial/software/matlab/ http://www.engin.umich.edu/group/ctm/basic/basic.html http://www.mines.utah.edu/gg_computer_seminar/matlab/matlab.html http://www.math.ufl.edu/help/matlab-tutorial/ http://www.indiana.edu/~statmath/math/matlab/ Matlab Ing. Francesco Licandro - 2005 50