Esercitazione 1 - Introduzione
MATLAB
MATrix LABoratory
Matlab
Contenuto cartella corrente
Current Directory
Variabili correnti
editor
Command window
Comandi recenti
Matrici
• MATLAB tratta tutte le variabili come matrici
• I vettori sono forme speciali di matrici con una sola riga o colonna
• Gli scalari sono trattati come vettori con una sola riga e una sola
colonna
v_riga = [1 2 3];
v_colonna = [1; 2; 3];
matrice = [1 2 3; 4 5 6; 7 8 9];
123
1
2
3
1 2 3
4 5 6
7 8 9
Operatori
Trasposizione (‘)
a’
Potenze (^ o .^)
Moltiplicazione (* o .*)
Divisione (/ o ./)
a^b o a.^b
a*b o a.*b
a/b o a./b
1 2 3
A = 1 0 1
2 4 3
Addizione (+)
Sottrazione (-)
Assegnamento (=)
1 2 2
B = 2 3 1
0 1 2
A*B =
5 11 10
1 3 4
8 17 15
A .* B =
1 4 6
2 0 1
0 3 8
a+b
a-b
a=b
Linearita degli operatori (1)
1 2 3
A = 1 0 1
2 4 3
1 2 2
B = 2 3 1
0 1 2
mean(3A+2B) = mean
3 6 9
3 0 3
6 12 9
mean(3A)+mean(2B) = mean
H(αA+βB) = H(α A)+H(βB)
2 4 4
4 6 2
0 2 4
3 6 9
3 0 3 + mean
6 12 9
5 10 13
7 6 5
6 14 13
= mean
2 4 4
4 6 2
0 2 4
= 8.78
= 5.67+3.11= 8.78
operatore lineare
Linearita degli operatori (2)
1 2 3
A = 1 0 1
2 4 3
1 2 2
B = 2 3 1
0 1 2
median(3A+2B) = median
median(3A)+median(2B) = median
H(αA+βB) ≠ H(α A)+H(βB)
5 10 13
7 6 5
6 14 13
3 6 9
3 0 3 + median
6 12 9
= 7
2 4 4
4 6 2 = 6+4 = 10
0 2 4
operatore non lineare
Estrazione di sotto-matrici
A =
1 2 3
1 0 1
2 4 3
A (:) =
A(1)
A(1,1)
A(4)
A(1,2)
A(7)
A(1,3)
A(2)
A(2,1)
A(5)
A(2,2)
A(8)
A(2,3)
A(3)
A(3,1)
A(6)
A(3,2)
A(9)
A(3,3)
1 2 3
1 0 1
2 4 3
A (: ,1) =
1
1
2
A (2 ,3) = 4
A (1 ,:) = 1 2 3
A (6) = 4
[I,J] = ind2sub(siz,ind)
[I,J] = ind2sub([3 3], [5 6])
IND = sub2ind(siz,I,J)
ind = sub2ind([3 3], 3, 2)
I=23
J=22
ind = 6
Creazione di matrici da sottomatrici
B=
1
1
2
C=
F = [B, C, D]
H = [F, G]
0
2
3
F =
H =
D=
1 0 1
1 2 0
2 3 0
1 0 1 1 1 0
1 2 0 1 0 0
2 3 0 2 0 1
1
0
0
E=
1 0
0 0
0 1
G = [B, E]
H(1:3,2:3)=E;
G =
H =
1 1 0
1 0 0
2 0 1
1 1 0 1 1 0
1 0 0 1 0 0
2 0 1 2 0 1
Operazioni su matrici
size (A)
1 2 3
A = 1 0 1
2 4 3
length (A)
min (A)
max (A)
3x3
9
101
243
max (A(:))
4
mean(A(:)), std(A(:)), var(A(:)), …
sum(A(:)), abs(A(:))
Matrici “notevoli”
zeros (3)
0 0 0
0 0 0
0 0 0
ones (3)
1 1 1
1 1 1
1 1 1
rand (3)
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
distribuzione uniforme [0 1]
randn(3)
distribuzione gaussiana a media nulla
Istruzioni if e for
if expression1 % is true
% execute these commands
elseif expression2 % is true
% execute these commands
else
% the default
% execute these commands
end
for x = 1: p : M
% comandi
end
L’istruzione find
ind = find(condizione)
1 2 3
A = 1 0 1
2 4 3
ind1 = find(A==2)
ind1 = [3 4]
ind2 = find(A<2)
ind2 = [1 2 5 8]
A(ind2) = 0;
0 2 3
A = 0 0 0
2 4 3
Funzioni
function [output1, output2] = name (input1, input2, input3)
(il nome della funzione deve avere lo stesso nome del file .m in cui viene salvata)
[output1, output2] = name (input1, input2, input3);
function [minimo, massimo] = minmax (A)
minimo = min(A);
massimo = max(A);
Sul workspace
Dall’editor si salva come
“minmax.m”
A=[1 2 3; 1 0 1; 2 4 3];
[m, M] = minmax (A);
x = (m + M)/2
Immagini
1
x
1
b = a(21:36,9:24)
uint8
a = im2double(a)
double
y
Immagini a colori
size(a)
[384 512 3]
size(b)
b=rgb2gray(a);
[384 512]
Operazioni base con le immagini
a = imread(‘icona.pgm’);
imshow(a);
figure(); imshow(a);
b=1-a;
figure();
subplot(1,2,1); imshow(a);
subplot(1,2,2); imshow(b);
title(‘esempio’);
imwrite (b, ‘icona2.pgm')
.pgm
.jpg
.png
…
Connessione tra pixel
A B i
E=0
E = -1
E=2
• quante sono le regioni 8-connesse?
• quante sono le regioni 4 connesse?
• qual è il numero di Eulero nei due casi?
Distanza tra pixel
D = √(39-4)²+(11-31)² = 40.31
D = sqrt((39-4)^2+(11-31)^2));
D = |39-4|+|11-31| = 55
D = abs(39-4)+abs(11-31);
D = max(abs(39-4),abs(11-31))
L’istogramma e la binarizzazione
figure(); imhist(a)
f = find(a<0.3);
z = ones(size(a));
z(f) = 0;
imshow(z);
bw = im2bw(a, 0.3);
Funzioni MATLAB viste oggi
•
•
•
•
•
•
•
•
•
•
ind2sub, sub2ind
mean, median
size, length
min, max, mean, std, var
sum, abs
zeros, ones, rand, randn
find
im2double
imread, imwrite
imshow, subplot, figure
Scarica

Matlab - SIMPlify.it