INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla...

38
INTRODUZIONE A MATLAB Segnali deterministici e stocastici Elaborazione di dati e segnali Biomedici 2018/2019

Transcript of INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla...

Page 1: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

INTRODUZIONE A MATLAB

Segnali deterministici e stocasticiElaborazione di dati e segnali Biomedici

2018/2019

Page 2: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

2

Fonti bibliograficheIl materiale da cui è tratto questo corso è reperibile ai seguenti

indirizzi :

❑ http://homes.chem.polimi.it/dmanca/CDPDIC/

❑ http://www.iet.unipi.it/n.vanello/mat_did_met_12_13.html

❑http://www.ingbiomedica.unina.it/studenti/ing_bio/el_dati/el_dati.html

ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienzapersonale

Page 3: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

3

Matlab è un ambiente interattivo che integra in modo efficiente ilcalcolo, la visualizzazione e la programmazione.

L’ambiente MATLAB consente di gestire variabili, importare edesportare dati, svolgere calcoli, disegnare grafici, programmareistruzioni e sviluppare applicazioni (tra cui la costruzione grafica dell'interfaccia utente).

Matlab è stato sviluppato specificamente per applicazioni basate sumatrici e algebra lineare, nell’ambito dell’analisi numerica. Il termineMatlab deriva appunto da MATrix LABoratory.

Cos’è MATLAB

Page 4: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

4

MATLAB è un ambiente di lavoro che include

❑ una potente libreria grafica [MATLAB figure (*.fig)]

❑ un ambiente grafico per simulare sistemi complessi (Simulink)

❑ una ricchissima libreria di funzioni matematiche (Toolbox)

❑ la possibilità di creare delle interfacce user-friendly (GUI, Graphical UserInterface)

Cos’è MATLAB

Page 5: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

5

I TOOLBOXES comprendono un particolare gruppo di funzioni (.m

files) che estendono il campo delleapplicazioni del software,

permettendo di risolvere particolariclassi di problemi

La lista completa dei Toolbox attualmente disponibili è

consultabile nel sito:http://www.mathworks.it/products/

products_by_category.shtml

ToolboxesIdentificare il Toolbox o digitare

la funzione

Page 6: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

6

Scelta dell’argomento di interesse

Identifico e/o scelgo un esempio

Toolboxes

Page 7: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

7

Alcuni principali ToolboxesTHE SIGNAL PROCESSING TOOLBOX : contiene strumenti utili all'elaborazione di segnalidigitali monodimensionali e bidimensionali, al progetto e all'analisi di filtri digitali e la stimadello spettro di potenzaTHE SPLINE TOOLBOX: contiene comandi per lavorare con le curve di interpolazionedenominate splines. THE SYSTEM IDENTIFICATION TOOLBOX: contiene strumenti per la modellizzazioneparametrica e per l'identificazione dei sistemi. E' specializzato nella stima di modelli basati sudati input/output o serie temporali. THE OPTIMIZATION TOOLBOX: contiene comandi per l'ottimizzazione di funzioni generali, lineari e non lineari.THE NEURAL NETWORK TOOLBOX: contiene funzioni per il progetto e la simulazione di retineurali. THE CONTROL SYSTEM TOOLBOX: contiene funzioni per la modellizzazione , l'analisi ed ilprogetto di sistemi di controllo automatico.

Page 8: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

8

Sessione di lavoro

CommandWindow:Finestra dei

comandi

CommandHistory:

Cronologia dei comandi

CurrentDirectory:

cartella di lavoro in cui MATLAB

cerca e salva i fileWorkspace:Variabili caricate nella sezione di lavoro corrente

Icona Help

Page 9: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

9

Finestre

La finestra Current Directory permette di esplorare il contenuto delle cartellesul proprio hard disk. Da questa finestra è possibile aprire direttamente file

compatibili con MATLAB con un semplice doppio click. Inoltre è possibileesplorare cartelle utilizzando, in Command Window, comandi tipici dei moderni

sistemi operativi basati su tecnologia UNIX (come Linux e MAC): “cdnome_cartella", "cd ..", "cd /indirizzo_cartella", “ls”, “pwd” (print working

directory).La Command Window è una finestra dell'interfaccia principale diMATLAB, nella quale è possibile digitare comandi supportati, e

visualizzare a video in tempo reale i risultati

Page 10: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

10

FinestreLa Command Window permetteall’utente di dialogare con ilprogramma. Attraverso questafinestra, l’utente può digitare icomandi, le funzioni e leistruzioni che devono essereeseguite.Matlab è un programma a rigadi comando: il simbolo >>, checompare nella finestra deicomandi, è il prompt di Matlabe indica che il programma èpronto a ricevere l’inputdall’utente. Prima di immettereun’istruzione è necessarioaccertarsi che il cursore si trovisubito dopo il prompt.

Page 11: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

11

Workspace

Il Workspace è uno spazio di lavoro (o spazio di memoria) dove vengono memorizzate le variabili dichiarate. Di default, le variabili numeriche sono in doppia precisione (double).

Le variabili scalari sono viste come array di dimensione 1x1. Il contenuto di queste variabili può essere variato con una semplice operazione di assegnazione.

Page 12: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

12

La finestra Workspace contiene la listadelle variabili e le seguentiinformazioni:

• Name: nome della variabile

• Value: valore assegnato allavariabile o dimensione come array (righe per colonne)

• Class: il tipo di variabile(double, char, logical, table, cell, struct…)

Workspace

Page 13: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

13

Immissione dei comandi attraverso tastieraEsempio: Matlab utilizzato come una semplice calcolatrice. Questa modalità viene chiamata sessione interattiva.Digitando:

>> 10/3 + INVIO

sullo schermo comparirà la risposta di Matlab:ans =3.3333

La risposta viene assegnata automaticamente ad una variabile temporanea che Matlab chiama ans, che può essere utilizzata per calcoli successivi.

Page 14: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

14

Si può utilizzare la variabile ans per eseguire altri calcoli:

Immissione dei comandi attraverso tastiera

>> 10*ans + INVIO

ans =33.3333

Il valore contenuto nella variabile ans viene così modificato.

Per non perdere i dati è pertanto necessario utilizzare variabili definite dall’utente.Per ogni riga di codice scritta per eseguire un calcolo è necessario inizializzare una variabile in cui allocarne il risultato.Una variabile scalare viene definita utilizzando l’operatore di assegnazione = (diverso dall’uguaglianza matematica):>> A=2A =2assegna il valore ‘2’ (a destra dell’operatore) alla variabile indicata a sinistra ‘A’.

Una variabile di cui non si sa le dimensioni che assumerà successivamente può essere definita dal comando:>> v=[];

Page 15: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

15

Immissione dei comandi attraverso tastieraPer evitare l'effetto eco sul video si digita un ";" alla fine dell'istruzione.

Matlab conserva in memoria una variabile finché non viene esplicitamente cancellatacon il comando clear seguito dal nome della variabile:>> clear A Si noti che Matlab distingue tra lettere maiuscole e minuscole: A e a sono due variabilidiverse!In Matlab è anche possibile utilizzare l’operatore di assegnazione per scrivere istruzioniauto-referenziali:>> C =16;>> C = C+100C =116Questa istruzione permette di aggiungere 100 al valore corrente di C. Eseguital’operazione, non rimarrà traccia in memoria del precedente valore di C.

Page 16: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

16

Comandi di uso generale•who: elenco delle variabili definite in memoria

•whos: informazioni su tutte le variabili in memoria

•clc: pulisce la Command Window

•clear: cancella tutte le variabili in memoria o una in particolare se specificata

•save: salva tutte le variabili in memoria sul file specificato, in vari formati

•load: richiama in memoria le variabili salvate sul file specificato

• diary: salva sul file di testo ASCII diary quanto da quel momento appare sulla

linea di comando

•what: elenco di tutte le funzioni MATLAB nell’area di lavoro (estensione .m) e

dei file di dati che sono stati salvati (estensione .mat)

Page 17: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

17

Documentazione MATLABTutte le funzioni dei toolbox di MATLAB sono descritte tramite una documentazione che spiega input, output e sintassi perrichiamarle. Per accedere a queste informazioni esistono diversi metodi, tra cui digitare sulla linea di comando:

>>doc nome della funzioneapre una documentazione più esaustiva in una finestra separata>>help nome della funzionemostra una versione più breve della documentazione direttamente nella Command Window

E anche possibile avere un help di tutte le funzioni di una certa categoria; ad esempio per sapere quali sono le funzionispecifiche per l’analisi ed il controllo di sistemi dinamici, basta digitare:>>help control

Per conoscere e appronfondire quali sono le varie categorie di funzioni

disponibili (i cosiddetti toolbox), basta cliccare su Help nel pannello superiore

Page 18: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

18

Variabile doubleLa variabile double è di tipo numerico. Possono contenere numeri reali, immaginari o complessi definiti da 16 numeri decimali. Le operazioni con il tipo double mantengono un’elevata precisione dei risultati.

N.B. :Diversamente da linguaggi come il C, in cui il nome ed il tipo di ogni variabile devono essere esplicitamente dichiarati prima di usare la variabile, in Matlab le variabili sono create dinamicamente, semplicemente assegnando un valore.

Valori a 16 bit, ognuno dei quali rappresenta un carattere.I char arrays vengono usati per contenere stringhe di caratteri

Variabile char

Page 19: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

19

Variabili predefinite

Matlab include un insieme di variabili predefinite contenenti valori particolari. Tali variabili possono essere usate senza che sia necessario inizializzarle.

Page 20: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

20

Array: Vettori e Matrici

In Matlab un vettore riga si rappresenta come v1 = [5 45 73 29]

Gli elementi del vettore si contano a partire da 1:v1 = [5 45 73 29]

1°elemento 2°elemento 3°elemento 4°elemento

Un array è insieme di valori organizzati secondo righe e colonne, e individuato da un uniconome. L’ordine degli elementi è la caratteristica fondamentale degli array. Le righe e lecolonne formano una griglia di indicizzazione, che permette di identificare in manieraunivoca gli elementi in essi contenuti. Quando un array è formato da una singola riga o dauna singola colonna si parla rispettivamente di vettore riga. Quando un array è formato daalmeno due righe e due colonne prende il nome di matrice.

Page 21: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

21

VettoriSeparando i valori con uno spazio o una virgola viene generato un vettore riga:>> temp_riga = [14, 15, 12, 13, 13, 16, 19, 14, 15, 17]

Per creare un vettore colonna, gli elementi devono essere separati da un punto e virgola:>> temp_colonna = [14; 15; 12; 13; 13; 16; 19; 14; 15; 17]

Creazione di un vettore con tutti gli elementi = 0v1 = zeros(1,3) ⇒v1 [0 0 0]

Creazione di un vettore con tutti gli elementi = 1v1 = ones(1,3) ⇒v1 [1 1 1]

Vettore con elementi equispaziati di 1 v1 = [1:11]

Vettore con elementi equispaziati di N v1 = [1:N:11]

Per N=2 ottengo:[1 3 5 7 9 11]

Per accedere all’i-esimo elemento del vettore v1 si utilizza l’espressionev1(i)

Quindi per accedere al 3°elemento: v1(3)=5

Page 22: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

22

VettoriPossiamo creare un nuovo vettore concatenando due o più vettori. Supponiamo di avere generato i seguenti vettori:>>A = [1, 2, 3]>>B = [4, 5, 6, 7]Possiamo generare il vettore C semplicemente unendo A e B:>> C = [A B]C =1 2 3 4 5 6 7

Per estrarre una porzione limitata di un vettore dichiarato:>>C(2:5)2 3 4 5

Per eliminare uno o più elementi di un vettore

>>prova=[5, 7, 1, 15, 3, 8, 40];>>prova([2,6])=[]prova=5 1 15 3 40

>>prova=[5, 7, 1, 15, 3, 8, 40];>>prova(2:6)=[]prova=5 40

Page 23: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

23

Esempio di array (vettore)Un segnale biomedico campionato (e quindi discreto) è un classico esempio di array

Page 24: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

24

Matrici

Le matrici sono array bidimensionali, formati da almeno due righe e due colonne. La dimensione di una matrice è data dal numero di righe e di colonne

Per generare una matrice si utilizzano le stesse regole viste nel caso dei vettori: è sufficiente digitare tutti i valori, una riga dopo l’altra, separando le righe con l’operatore(;) e i valori di ciascuna riga con l’operatore (,) o con uno spazio.Per esempio, la seguente istruzione:

A= [7, 3, 5; 9, 1, 4]genera una matrice 2x3, formata da due righe e tre colonne:A =7 3 59 1 4

Page 25: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

25

MatriciCome aggiungere la riga r alla matrice A:

Per aggiungere un vettore riga ad una matrice è necessario in questo caso che la matrice ed il vettore abbiano lo stesso numero di colonne. In altri termini il numero di elementi del vettore deve coincidere con il numero di colonne della matrice. In caso contrario MATLAB genera un messaggio di errore.

L’operatore due punti (:) permette di selezionare sottoinsiemi di valori all’interno di un array:>>B(3,:)7 8 9

Per creare una matrice di numeri random si utilizza la funzione rand(M,N), che genera una matrice MxN di numeri casuali nell’intervallo (0,1) Per creare una matrice diagonale NxN a partire da un vettore u di dimensione N si utilizza la funzione diag(u), dopo aver definito il vettore u.

Page 26: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

26

Comandi utiliMatlab implementa alcuni comandi molto utili nell’utilizzo degli array. I più comuni sono:• max (x) (min(x))restituisce il valore più grande (più piccolo) di x se x è un vettore; se x è una matrice restituisce un vettore riga i cui elementi corrispondono ai valori più grandi delle corrispondenti colonne di x (opera lungo la prima dimensione diversa da 1)• ndims (x)restituisce il numero di dimensioni di un array• size (x)restituisce un vettore riga con due valori [i j] uguali al numero di righe e colonne di x (size(x,1) o size (x,2) restituiscono rispettivamente il numero di righe e di colonne della matrice)• length (x)restituisce il numero degli elementi del vettore x• sum (x)restituisce la somma dei valori di x se x è un vettore; se x è una matrice restituisce un vettore riga i cui elementi corrispondono alla somma degli elementi di ciascuna colonna di x. Nell’help leggo:S = sum(X,DIM) sums along the dimension DIM.• sort (x, DIM,MODE)restituisce un array della stessa dimensione di x ordinando gli elementi in ordine crescente o decrescente. Nell’help leggo: ‘DIM selects a dimension along which to sort.’ ‘MODE selects the direction of the sort: 'ascend' results in ascending order, 'descend' results in descending order’

Le funzioni predefinite di MATLAB permettono di assegnare a variabili le dimensioni di una matrice (size) e la lunghezza di un vettore (length)>>[m,n]=size(a) >>n=length(v)

Page 27: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

27

Comandi utiliL’ingresso DIM di un comando indica la dimensione dell’array lungo la quale si vuole operare: la prima dimensoneidentifica le righe e la seconda le colonne della matrice.

ESEMPI>> help sizeM = size(X,DIM) returns the length of the dimension specified by the scalar DIM.

>> help maxmax(X) is a row vector containing the maximum element from each column[Y,I] = max(X) returns the indices of the maximum values in vector I[Y,I] = max(X,[],DIM) operates along the dimension DIM.

APPLICAZIONE>> A= 9* rand(3,4)A =

8.6145 1.2770 7.1299 0.32144.3684 3.7959 8.6354 7.64227.2025 8.2416 5.9017 8.4059

>> [Y,I] = max(A,[],2) %restituisce i valori massimi e le loro posizioni per ciascuna riga: col numero 2 specifico di lavorare sulla seconda dimensioneY =

8.61458.63548.4059

I =134

Page 28: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

28

Operazioni con gli arrayGli operatori applicabili a matrici sono:

+ - * ^ / \ ./ (.*,.^) ‘

Addizione e sottrazione array-scalareSomma (sottrazione) dei corrispondenti elementi della matrice o del vettore ed il valore scalare. >>G =[1 2 3];>> G+50 ans = 51 52 53

Addizione e sottrazione di arrayL’addizione (sottrazione) tra due array restituisce un nuovo array C i cui elementi sono la somma (sottrazione) dei corrispondenti elementi di A e di B. A, B e C hanno le stesse dimensioni.Formalmente, C=A±B implica cij=aij±bij

Tipo di operandi

• array-scalare e scalare-array • vettore-vettore o matrice-matrice• matrice-vettore

Page 29: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

29

Operazioni con gli arrayMoltiplicazione array-scalareLa moltiplicazione di un array A per uno scalare restituisce un nuovo array C i cui elementi sono il prodotto dei corrispondenti elementi di A per lo scalare. Per esempio:

Con:Z =19 24 15 2114 18 16 1717 16 13 1910 17 18 13

>> Z*3ans =57 72 45 6342 54 48 5151 48 39 5730 51 54 39

Elevazione a potenzaG =1 2 3array-scalare>> G.^3ans =1 8 27

scalare-array>>3.^Gans =3 9 27

Prodotto scalareIl prodotto scalare è un’operazione tra un vettore riga vr[a1, …, an] ed un vettore colonna vc[w1, …, wn] aventi entrambi n elementi. E’ definito come il valore scalare ottenuto dalla somma dei prodotti degli elementi corrispondenti dei due vettori: a1 w1+ …+an wn.In Matlab basterà digitare:>> vr*vcAlternativamente, si può usare la funzione dot:>> dot(vr,vc)

Moltiplicazione matrice-vettore colonnaE una generalizzazione del prodotto scalare. Richiede che il numero di colonne della matrice coincida con il numero di elementi del vettore colonna. Il risultato è un vettore colonna avente tanti elementi quante sono le righe della matrice.

Moltiplicazione matrice-matriceSegue le regole dell’algebra lineare: la moltiplicazione della matrice A con la matrice B richiede che il numero di colonne di A sia uguale al numero di righe di B e fornisce una matrice C con un numero di righe uguale ad A e di colonne uguale a B. In Matlab si esegue utilizzando l’operatore *.

Page 30: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

30

Divisione array-scalare e scalare-arrayLa divisione array-scalare restituisce un nuovo array i cui elementi sono il quoziente tra i corrispondenti elementi di Z ed ilvalore scalare.Matlab consente anche la divisione scalare array, attraverso l’ operatore: ./. Per esempio, se d=[1 10 100], digitando 1./ siottiene [1/1 1/10 1/100].>> 1./dans =1.0000 0.1000 0.0100

Divisione tra arrayDate due matrici A e B con A e B quadrate e invertibili, si ha che:B/A equivale a B*A^(-1)B\A equivale a B^(-1)*A

Operazioni con gli array

Moltiplicazione, divisione, elevazione tra array elemento-per-elementoLe operazioni punto agiscono su array che abbiano le stesse dimensioni:.* prodotto elemento per elemento./ divisione elemento per elemento.^ potenza elemento per elementoNel caso della moltiplicazione, formalmente C=A.*B implica cij=aij*bij.

TraspostaPer scambiare le righe con le colonne di un vettore e di un array a 2 dimensioni (matrice)si utilizza l’operatore ‘

Page 31: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

31

eye (n) crea una matrice identità nxnones (n) crea una matrice nxn i cui elementi sono uguali a 1 zeros (n) crea una matrice nxn i cui elementi sono uguali a 0 ones (m,n) crea una matrice mxn i cui elementi sono uguali a 1zeros (m,n) crea una matrice mxn i cui elementi sono uguali a 0

Matrici speciali

round arrotonda all’intero più vicinofix arrotonda al più vicino intero verso lo zerofloor arrotonda per difettoceil arrotonda per eccessorem resto di una divisione interaabs valore assoluto

Funzioni elementari

Page 32: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

32

Grafici 2D

Il comando più utilizzato per disegnare grafici in 2-dimensioni è il comando plot il quale permette di unire mediante una spezzata i punti individuati dalle coordinate relative a due vettori i cui elementi sono riportati su una coppia di assi ortogonali. E essenziale che i due vettori abbiano la stessa lunghezza.

>> x=[0:0.01:2*pi];>> y = sin(x); >>figure>> plot(x,y)

Per visualizzare le informazioni sulle funzioni grafiche digitare: >>help graph2d

Se x e y sono vettori, Matlab genera una curva con i valori di x sull’asse orizzontale e i valori di y sull’asse verticale.

Page 33: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

33

Grafici 2DLa seguente tabella riporta una serie di comandi utili per completare il diagramma:xlabel (‘testo’) ylabel (‘testo’) title (‘testo’) grid ongrid offaxis ([xmin xmax ymin ymax])axis square

axis equalaxis auto

L’ordine di questi comandi non è rilevante purché seguano il comando plot

genera i titoli o etichette dell’asse xgenera i titoli o etichette dell’asse ygenera il titolo del graficoaggiunge una griglia al diagrammaelimina la griglia dal diagrammaimposta i valori dei limiti degli assiseleziona automaticamente i limiti degli assi in modo da ottenere un diagramma quadratoimposta una spaziatura identica per gli assiimposta automaticamente limiti “ideali” per una corretta visualizzazione

Un'opzione della funzione plot permette di differenziare i tipi di linee e il colore dei grafici. La sintassi è:

>> plot(x,y,'s')dove s è una stringa di caratteri scelta nella lista che può essere visualizzata digitando: >>help plot

Page 34: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

34

Per sovrapporre più grafici usando plot in momenti successivi esistono diversi metodi:

• Comando hold on:

x=-pi/2:.1:3/2*pi;plot(x,cos(x))hold on plot(x,sin(x),'g'), grid onlegend('sinx', 'cosx')hold off

Grafici 2D

• Unico comando plot: x=-pi:pi/500:pi;y=sin(x);y1=sin(2*x);y2=sin(3*x);plot(x,y,'r',x,y1,'-.g',x,y2,':b')

• Unica matrice (le curve non si possono differenziare con i simboli )

x = (0:.1:4)*pi; y1 = sin(x); y2 = cos(x);Y = [y1',y2']plot(x,Y) legend('sinx', 'cosx')

Page 35: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

35

Grafici 2D

subplot (2,4,1) subplot (2,4,6)

ALTRI COMANDI

❑ La funzione figure crea una nuova finestra grafica che diviene figura attiva: è un commando necessario se si vuolecreare una nuova figura oltre a quella già esitente. Per rendere attiva una figura esistente si può usare il mouse, orichiamarla con il numero indicato nella barra: figure(1)

❑ Per generare più diagrammi nella stessa figura si utilizza il comando subplot.Sintassi:subplot (m,n,p)Tale comando suddivide la figura in mxn pannelli e posiziona il diagramma nel pannello p.

Page 36: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

36

Grafici 2DGRAFICARE DATI COMPLESSI (PLOT)z = 1 + .5j plot(z,'b*')axis([-3 3 -3 3])grid ontext(real(z)+.1,imag(z), 'z') %aggiungi il carattere ‘z’ nella posizioneindicata

xlabel('real')ylabel('imag')title('Numero Complesso')

GRAFICARE DATI COMPLESSI (POLAR)z = 1 + .5j;

teta = angle(z);r = abs(z);polar(teta,r, 'b*'),title('Numero Complesso')

Page 37: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

37

Esercizi

1) Costruire una matrice A =

Costruire la matrice B formata dalle sole colonne pari di A.Costruire la matrice C formata dalle righe 1, 4, 3 e dalle colonne 5, 2.2) Generare un vettore x di 100 componenti, costituito da numeri reali compresi tra 0 e 2 equispaziati,ed un vettore y di 30 componenti con passo 0.5. Si verifichi, inoltre, la dimensione di x e quella di y.3) X=[3 5 –1 2 –6 1 7 –0.5 0.9] è un vettore di misurazioni. Eliminare i valori nelle posizioni pari.4)Creare una matrice di due colonne per la funzione y=log x (funzione log di Matlab) nell’intervallo[1,5] con passo 0.1 (la prima colonna rappresenta la variabile x e la seconda la variabile y).5) Generare una matrice random A di dimensione 5 x 6; valutare la somma degli elementi della terzacolonna. Generare un vettore colonna che concateni la terza riga alla seconda colonna della matrice A.Si generi la matrice composta dagli elementi appartenenti alla prima e terza riga ed alla seconda equarta colonna di A.

Page 38: INTRODUZIONE A MATLA 2019... · 2019. 3. 13. · ed è integrato con altro proveniente sia dalla Rete sia dalla mia esperienza personale. 3 Matla èunamiente interattio he integrainmodoeffiiente

38

Esercizi

6) Moltiplicare elemento per elemento i vettori x=[1 1 1 1] ed y=[2 3 4 5]; calcolare il prodotto scalaredei due vettori assegnati.7)Generare il vettore x=[2, 3, 4, 5, 6, 7, 12] e costruire il vettore y=[2, 3, 4, 5, 6, 7, 12, 12, 7, 6, 5, 4, 3,2] ed assegnare alla variabile d la sua dimensione.8) Generare un seno a f=100 Hz e un coseno a f=200 Hz e graficare:

- i due segnali (uno in rosso e uno in blu) su uno stesso grafico;- il prodotto e la somma dei due segnali su una figura con due grafici separati.

NB. Si costruisca un vettore tempo che rispetti la condizione di Nyquist fc=2*fs.9) Generare due vettori di lunghezza N di:

- numeri random selezionati da distribuzione normale;- numeri random selezionati da distribuzione uniforme;

Graficare gli istogrammi dei due vettori risultanti.

Aiuto: si consulti la documentazione MATLAB per le funzioni rand, randn e hist.