Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Matrici in Matlab.pdf · Lezione 21:...

26
Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria Corso B Docente : Ing. Secondulfo Giovanni Anno Accademico 2010-2011 Lezione 21: Tipi di dato, Vettori e Matrici in MATLAB Giovedì 18 Novembre 2010

Transcript of Universitàdi Salerno Corso di FONDAMENTI DI INFORMATICA ... e Matrici in Matlab.pdf · Lezione 21:...

Università di Salerno Corso di

FONDAMENTI DI INFORMATICACorso di Laurea Ingegneria

Corso BDocente : Ing. Secondulfo Giovanni

Anno Accademico 2010-2011

Lezione 21: Tipi di dato, Vettori e Matrici in MATLAB

Giovedì 18 Novembre 2010

Fondamenti di Informatica Ing. Secondulfo Giovanni

2

I tipi di dato in Matlab sono organizzati secondo la seguente gerarchia

Vedi matlab help (Data types overview matlab data types) per maggiori dettagli

Fondamenti di Informatica Ing. Secondulfo Giovanni

3

Fondamenti di Informatica Ing. Secondulfo Giovanni

4

Single numeri reali rappresentati con 32bit

Double numeri reali rappresentati con 64bit

Fondamenti di Informatica Ing. Secondulfo Giovanni

5

Tipi Componenti

Semplici

Strutturati

Ad esempio :

un numero complesso a+jb è costituito dal coefficiente della parte reale e dal coefficiente della parte immaginaria entrambi, in generale, saranno dei numeri reali. I componenti di una parola sono i caratteri, ma possono anche essere vettori di vettori.

Assemblaggio

Prodotto Cartesiano

(definisce il tipo come una n-pla dei tipi componenti)

Sequenza

(definisce il tipo componente come un allineamento (o stringa) di valori omogenei, e di lunghezza variabile)

Tipi Strutturati Generalità

Fondamenti di Informatica Ing. Secondulfo Giovanni

6

Funzione di accesso

Si definisce Funzione di Accesso la modalità e la notazione per far riferimento ad un valore del tipo strutturato

per posizione

Definisce ad esempio che la posizione i-esima individua l i-esimo componente

per nome

Se viene associato uno specifico nome s ciascun componente del tipo (es. parte reale , parte immaginaria nel numero complesso)

Costruttore del tipo

E la struttura sintattica, che identifica le modalità di costruzione e i tipi componenti, cui sono associate le funzioni di accesso

Costruttore dei valori

E il formalismo adoperato per indicare un valore strutturato attraverso di suoi componenti. es. (x,y)

Tipi Strutturati Generalità (cont.)

Fondamenti di Informatica Ing. Secondulfo Giovanni

7

Gli array si definiscono come cartesiano di n tipi uguali:

tipo array = cartesiano (T 1 , T 2 , ..., T n )

con tipo T 1 = T 2 = ... = T nSono caratterizzati da:

struttura ad accesso casuale

accesso con un indice calcolato

Per la dichiarazione del tipo Array occorre specificare:

tipo degli elementi componenti

int, float, etc

numero di indici (dimensionalità o rango dell array)

Array monodimensionale (vettore)

Array bidimensionale (matrice)

valore minimo e massimo di ciascun indice

Gli Array

Fondamenti di Informatica Ing. Secondulfo Giovanni

8

numero di indici (dimensionalità o rango dell array)

Array monodimensionale (vettore)

Array bidimensionale (matrice)

valore minimo e massimo di ciascun indice

Gli Array

i vi

i

j

Mij

Vettore

Matrice

Fondamenti di Informatica Ing. Secondulfo Giovanni

9

Il componente di un array è detta variabile con indice ed assume la forma

nomeArray[espressioneindice]

Per la Funzione di accesso si utilizza una notazione del tipo:

M[i] (dimensionalità pari a uno)

M[i,j] M[i][j] (dimensionalità pari a due)

Operazioni sugli Array :

sui singoli elementi

sulla struttura in quanto tale

Linguaggi specialistici come Mathlab definiscono una serie di operazioni sulla struttura in quanto tale; ad esempio è possibile effettuare direttamente operazioni tipo :

- Somma elementi di una matrice

- Prodotto elementi di una matrice

- Valore minimo valore massimo di un array

- Prodotto di due Vettori

- Prodotto di due Matrici

Gli Array

Fondamenti di Informatica Ing. Secondulfo Giovanni

10

Statica

In alcuni linguaggi l array è una struttura statica nel senso che la dimensione è fissata al tempo della compilazione e pertanto l occupazione della memoria è fissa (viene definita la dimensione massima) Quando poi viene eseguito l occupazione è quella delle dimensioni effettive, cioè il numero degli elementi che effettivamente viene utilizzato, che in ogni caso non devono eccedere la dimensione massima

Dinamica

In alcuni linguaggi l array assume le dimensioni necessarie al tempo dell esecuzione, ne consegue che la dimensione massima è quella effettivamente utilizzata.

Confronto fra le tecniche di allocazione

Allocazione Statica :

Numero fisso e predefinito dei componenti dell array

Allocazione non Ottimale

Semplifica e velocizza l esecuzione

Allocazione Dinamica

Numero variabile dei componenti dell array

Uso efficiente della memoria

Leggermente più pesante in quanto l array è allocato in esecuzione

Gli Array Allocazione

Fondamenti di Informatica Ing. Secondulfo Giovanni

11

Monodimensionali:

Se i < j a(i) precede a(j)

Bidimensionali

Se i1 < i2 A(i1, .) precede A(i2, .)

Se j1 < j2 A(i, j1) precede A(i, j2)

A0,0 ; A0,1 ; A0,2 ; A1,0 ; . An-1,0 ; An-1,1 ; .

In generale il criterio di ordinamento è sul primo indice la dichiarazione di array consente al sistema di elaborazione di linearizzare la rappresentazione trasformandola di fatto in una notazione ad un unico indice. Es. per

A[2][3] si ha : A0,0 ; A0,1 ; A0,2 ; A1,0 ; A1,1 ; A1,2

Quindi il riferimento all elemento Ai,j è dato dalla posizione K (con K=0 per a[0][0] ) dove K = i * dimcol +J (dove dimcol è l estensione della seconda dimensione della matrice)

K0=A0,0 ; K1= A0,1 ; K2= A0,2 ; K3= A1,0 ; K4= A1,1 ; K5= A1,2

Ordinamento Elementi di un Array

Fondamenti di Informatica Ing. Secondulfo Giovanni

12

Ogni cosa in Matlab è rappresentata con una matrice!

Se hanno 1 dimensione il loro aspetto Se hanno 1 dimensione il loro aspetto intuitivo intuitivo èè quello di una quello di una lista lista o o arrayarray (vettore)(vettore)

Se hanno 2 dimensioni il loro aspetto Se hanno 2 dimensioni il loro aspetto intuitivo intuitivo èè quello di una quello di una matricematrice

Se hanno 3 dimensioni il loro aspetto Se hanno 3 dimensioni il loro aspetto intuitivo intuitivo èè quello di un quello di un parallelepipedoparallelepipedo

Fondamenti di Informatica Ing. Secondulfo Giovanni

13

Fondamenti di Informatica Ing. Secondulfo Giovanni

14

Collezione indicizzata di variabili dello stesso tipoIl valore di un array come unica variabile è quindi una n-pla di valori componenti;

( 2, 9, 0, -1, 24, 0, 9, 6 )

Fondamenti di Informatica Ing. Secondulfo Giovanni

15

Per creare un array in Matlab basta digitare gli elementi all interno di una coppia di parentesi quadre separandoli con uno spazio o con una virgola

Es: vet=[1,2,3,4,5]

E possibile creare un vettore colonna separando gli elementi con un ;

Es: vet=[1;2;3;4;5]

In alternativa è possibile utilizzare il simbolo di trasposizione Es: vet=[1;2;3;4;5]

Fondamenti di Informatica Ing. Secondulfo Giovanni

16

E possibile creare nuovi array a partire da array esistentiEs: vet1=[1,2,3,4,5] vet2=[6,7,8,9,0]

vet3=[vet1,vet2]quali saranno gli elementi contenuti in vet3?

Per creare un vettore di elementi regolarmente intervallati si utilizza l operatore :

x=[m:q:n] crea il vettore x formato da elementi aventi un incremento costante pari a q. Il primo valore è m mentre l ultimo è n se m-n è un intero multiplo di q altrimenti l ultimo valore èminore di nEs: x=[0:2:8] ->x=[0,2,4,6,8]Se l incremento q viene omesso Matlab lo pone per default uguale a 1

Fondamenti di Informatica Ing. Secondulfo Giovanni

17

linspace(x1,x2,n) crea un vettore riga di elementi linearmente intervallati indicando il numero di valori non l incremento

Es: linspace(5,8,31) = [5:.1:8]Se n viene omesso vengono generati 100 elementi

logspace(a,b,n) crea un array di elementi intervallati logaritmicamente dove n è il numero di punti fra 10a e 10b

x=logspace(-1,1,4) -> x=[0.1000,0.4642,2.1544,10.000]Se n viene omesso vengono generati 50 elementi

Fondamenti di Informatica Ing. Secondulfo Giovanni

18

E possibile creare una matrice digitando le righe della matrice una dopo l altra, separando gli elementi di ogni riga con uno spazio (o una virgola) e le righe con un ;

Es: A=[2,4,10;16,3,7]IMPORTANTE: gli spazi o le virgole separano gli elementi in varie colonne mentre il ; separa gli elementi in varie righe

Una matrice può essere creata combinando vettori riga e colonna

Fondamenti di Informatica Ing. Secondulfo Giovanni

19

Gli indici di una matrice sono gli elementi di riga e di colonna che identificano i vari elementi della matrice stessa

Es: v(5) indica il quinto elemento del vettore vEs: A(2,3) referenzia l elemento di riga 2 e colonna 3 della matrice AEs: A(2,3)=10 impostiamo a 10 l elemento di riga 2 e colonna 3 della matrice A

Fondamenti di Informatica Ing. Secondulfo Giovanni

20

L operatore : seleziona i singoli elementi, righe, colonne o sottoarray di array

Es: v(:) rappresenta tutti gli elementi del vettore vEs: v(2:5) rappresenta gli elementi compresi tra il secondo ed il quinto indice ovvero v(2),v(3),v(4)v(5)Es: A(:,3) identifica tutti gli elementi nella terza colonna di AA(:,2:5) identifica tutti gli elementi dalla seconda alla quinta colonna di AA(2:3,1:3) identifica tutti gli elementi nella seconda e nella terza riga che si trovano tra la prima e la terza colonna di A

Fondamenti di Informatica Ing. Secondulfo Giovanni

21

L array vuoto non contiene elementi ed èidentificato con [ ]Le righe e le colonne di una matrice possono essere cancellate impostandole uguali all array nullo

Fondamenti di Informatica Ing. Secondulfo Giovanni

22

zeros(n, m, classname): crea una matrice n x m di tutti 0 del tipo specificato in classname (solo tipo NUMERIC)ones: come zeros ma riempie la matrice con 1eye(n, m, classname): crea una matrice identità n x m di tipo classname (solo tipo NUMERIC)rand (n, m): crea una matrice n x m di numeri casuali (compresi tra 0 e 1)max(A): restituisce l elemento algebricamente più grande di A se A è un vettore. Oppure se A è una matrice l elemento più grande di ogni sua riga.min(A): come max questa volta però viene restituito l elemento più piccololength(A): restituisce il numero di elementi del vettore A o il massimo tra le righe o le colonne della matrice Asum(A): se A è un array somma gli elementi; se A è una matrice effettua la somma delle singole colonne e li mette in un arraysum (A, dim): somma gli gli elementi di A lungo la dimensione indicata con dimsort(A): ordina ogni colonna della matrice A in senso crescentenumel(A): ritorna il numero di elementi della matrice A

Fondamenti di Informatica Ing. Secondulfo Giovanni

23

find(x): restituisce un array contenente gli indici degli elementi non nulli dell array x.size(A): restituisce un vettore riga contenente le dimensioni della matrice Aany(A): verifica se ogni elemento di A è un numero diverso da zeroany(A, dim): come any(A) ma verifica la dimensione indicata da dimcat(n,A,B,C,..): crea una nuova matrice concatenando le matrici A,B,C lungo la dimensione n

Fondamenti di Informatica Ing. Secondulfo Giovanni

24

+ Somma array-scalare. [6,3]+2 = [8,5]- Sottrazione array-scalare. [8,3]-5= [3,-2]+ Somma di array. [6,5]+[4,8]=[10,13]- Sottrazione di array. [6,5]-[4,8]=[2,-3].* Moltiplicazione di array. [3,5].*[4,8]=[12,40]./ Divisione di array. [2,5]./[4,8]=[2/4,5/8].^ Elevazione a potenza di array. [3,5].^2=[3.^2,5^2]

Fondamenti di Informatica Ing. Secondulfo Giovanni

25

Prodotto scalare. E uno scalare

Moltiplicazione matrice vettore. E una matrice

Moltiplicazione matrice matrice. E una matrice

Fondamenti di Informatica Ing. Secondulfo Giovanni

26