MATLAB parte II Array

Transcript

MATLAB parte II Array
MATLAB parte II
MATLAB parte II
C. Guerrini
1
Array
• Tutte le variabili sono array (matrici)
• Un array è una struttura dati, cioè memorizza più dati all’interno di una
struttura identificata da un singolo nome
• Un array ha due dimensioni: la prima dimensione rappresenta il numero
di righe, la seconda il numero di colonne
• Scalare: array 1 x 1
• Vettore riga: array 1 x n
• Vettore colonna: array n x 1
• Matrice: array n x m
•
Ogni elemento dell’array è estratto specificando l’indice dell’elemento
dall’inizio dell’array
MATLAB parte II
C. Guerrini
2
1
Array: vettore o matrice
Vettore riga
1x4
V=[1 7 3 5]
Z=[1;4;5;7]
vettore colonna
4x1
A=[1 9; 5 -3;0.1
0.3]
Matrice 3 x 2
Elemento 7 e’
individuato dall’indice
2: v(2)
L’elemento 5 e’
individuato
dall’indice 3 : z(3)
L’elemento 0.1 e’
individuato dagli indici
(3,1): A(3,1)
MATLAB parte II
Costruzione di array:
>> a=[1:2:9]
a=
13579
>> a=[5:-1:1]
a=
54321
MATLAB parte II
C. Guerrini
3
v=[inizio:incremento:fine]
>> a=1:5
a=
12345
>> a=[0:0.1:0.3]
a=
0 0.1000 0.2000 0.3000
C. Guerrini
4
2
Costruzione di un array
Con una funzione Matlab:
linspace - genera un vettore riga con elementi equispaziati
logspace - genera un vettore con elementi logaritmicamente
equispaziati
x=linspace(0,pi,7)
x=
0 0.5236 1.0472
1.5708
>> x=logspace(0,pi,7)
x=
1.0000 1.2102 1.4646
MATLAB parte II
1.7725
2.0944
2.1450
2.6180
2.5959
3.1416
3.1416
C. Guerrini
5
Costruzione di array
Funzioni predefinite per generare matrici particolari
• eye(n) genera la matrice identità di ordine n, cioè la matrice che
ha elementi 1 sulla diagonale principale e 0 altrove
• zeros(m,n) genera una matrice m x n con elementi tutti uguali a 0;
fornendo in ingresso un solo elemento n si genera una matrice
quadrata n x n
• ones(m,n) analogo a zeros, ma tutti gli elementi della matrice
generata sono uguali a 1
• diag(v) crea una matrice diagonale con il vettore v sulla diagonale
• Si veda help elmat
MATLAB parte II
C. Guerrini
6
3
MATLAB parte II
C. Guerrini
7
Operatori algebrici
E’ possibile effettuare in modo trasparente tutte le usuali
operazioni elementari (+,-,*,/,^) ben definite tra matrici, vettori e
scalari
• Operazioni scalare-scalare
• Operazioni array-scalare
• Operazioni array-array
• Gli operatori algebrici possono essere applicati anche “elemento
per elemento” ad array delle stesse dimensioni usando la così
detta “sintassi del punto” (.+,.-,.*,./,.^)
• Valgono le solite regole di precedenza tra gli operatori e nell’uso
delle parentesi
MATLAB parte II
C. Guerrini
8
4
Operazioni elementari array-scalari
Data la matrice A di m
righe ed n colonne e uno
scalare b
>> C= A +b
Equivale a:
C(i,j)=A(i,j)+b
Per i=1:n-righe; j=1:n-colonne
>> C= A*b
Equivale a
Per i=1,2,…m; e j=1,2,…n
C(i,j)=A(i,j)*b
MATLAB parte II
•
•
•
>> C=A/b
Equivale a
Per i=1,2,…m; e j=1,2,…n
C(i,j)=A(i,j)\b
C. Guerrini
9
Le operazioni elementari + - * si estendo in modo naturale (quando
ben definite!) agli array
Non si estende l’operazione / (Il simbolo / risolve un sistema
lineare)
L’operazione ^ è definita solo per matrici quadrate
MATLAB parte II
C. Guerrini
10
5
MATLAB parte II
C. Guerrini
11
MATLAB parte II
C. Guerrini
12
6
Operazioni elemento per elemento
• Moltiplicazione
.*
• Divisione
./
• Elevamento a potenza .^
MATLAB parte II
C. Guerrini
13
MATLAB parte II
C. Guerrini
14
7
Dimensioni di un array
• diag(v): crea una matrice
diagonale con il vettore v sulla
diagonale
• diag(A): estrae la diagonale
della matrice A
• tril(A): estrae da la parte
triangolare inferiore
• triu(A): estrae da la parte
triangolare superiore
• abs(A): produce la matrice dei
valori assoluti degli elementi di A
• Data una matrice A m x n ed un
vettore v (riga o colonna) di
dimensione n:
• size(A) fornisce le dimensioni
m e n della matrice A .Possiamo
memorizzare il risultato in un
vettore scrivendo:
• [m,n]=size(A)
• length(v) fornisce la lunghezza
del vettore v
• numel(A) restituisce il numero
di elementi di A
MATLAB parte II
C. Guerrini
15
L'operatore [ ] può essere usato per concatenare matrici
MATLAB parte II
C. Guerrini
16
8
MATLAB parte II
C. Guerrini
17
Manipolazione di array
• Indirizzamento indiretto
• L'indirizzamento indiretto
tramite array numerico (ind)
• Estrae gli elementi che
hanno quell'indice numerico
MATLAB parte II
C. Guerrini
18
9
Manipolazione di array
• L'indirizzamento indiretto tramite
array logico estrae gli elementi
che hanno indice logico =1
(true)
In questo caso il vettore [1 1 0 0 0 1 1] è considerato
un vettore di indici e quindi non è valido
MATLAB parte II
C. Guerrini
19
Manipolazione di Array
Ricerca di un sotto array con la funzione find
>> help find
FIND find indices of non zero elements
I=FIND(X) returns the indices of the vector
X that are non zero
Esempio: matrice
>> a=[-1 6 3;
2 0 -1;
7 1 -4]
>>[rows,cols]=find(a>3)
rows= 3
1
Esempio: vettore
>> x=-3:3
X=
-3 -2 -1 0 1 2 3
>> p=find(abs(x)>1)
p=
1 2 6 7
cols= 1
2
MATLAB parte II
C. Guerrini
20
10