Matlab
Esercitazione 1 - Introduzione
Matlab
MATrix LABoratory
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
Istruzioni frequenti
clear all
;
close all
F9
CTRL invio
clc
% commento
%% per un codice più ordinato...
help
Help
Contents
getting started
 Matrices and arrays
 Expressions
 Working with matrices
• Generating matrices
 More about
• Linear algebra
•Arrays
 Graphics (per approfondire sui grafici)
• Using basic plotting functions
Printable documentation
Operatori
Trasposizione (‘)
Potenze (^ o .^)
Moltiplicazione (* o .*)
Divisione (/ o ./)
1 2 3
A = 1 0 1
2 4 3
Addizione (+)
Sottrazione (-)
Assegnamento (=)
a^b o a.^b
a*b o a.*b
a/b o a./b
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
a’
Estrazione di sotto-matrici
1 2 3
A = 1 0 1
2 4 3
A (:,:) =
1 2 3
1 0 1
2 4 3
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)
A(1)
A(1,1)
A(2)
A(1,2)
A(3)
A(1,3)
A (: ,1) =
1
1
2
A (3,2) = 4
A(4)
A(1,4)
A (1 ,3)
A (1 ,:) = 1 2 3
A (6) = 4
A (3)
Operazioni su scalari
x = 25
y = - 2.6
r = sqrt(x);
sign(y)
round(y)
r=5
-1
abs(y)
2.6
-3
floor(y)
-3
ceil(y)
-2
floor(abs(y))
2
Esempio1 : troncare un numero decimale a dec cifre dopo la virgola:
x = 10,9845739;
dec=2;
n=((1/10^dec)*sign(x))*floor(abs(x*(10^dec))
Operazioni su vettori e matrici
v= 1 3 2
size (v)
[1 3]
mean(v)
2
std(v)
min (v)
1
max (v)
3
sum (v)
6
sort (v)
1 2 3
A = 1 0 1
2 4 3
size (A)
length (A)
min (A)
[1 2 3]
length (v)
3
1
3x3
9
101
max (A(:))
4
max (A)
243
sum (A)
[4 6 7]
mean(A(:)), std(A(:)), var(A(:)), …
sum (A(:))
17
sum(A(:)), abs(A(:))
Matrici “notevoli”
0 0 0
0 0 0
0 0 0
zeros (3)
ones (1,3)
linspace(a, b, n)
n
a
rand (1,3)
randn(1,3)
0.8147
0.9134
[1 1 1]
0.2785
distribuzione uniforme [0 1]
distribuzione gaussiana a media nulla
Esempio 2a: costruire una matrice con diverse distribuzioni sulle righe:
X=zeros(3,100) %inizializzazione
X(1, :) = rand(1,100);
X(2, :) = rand(1, 100);
X(3, :) = randn(1, 100)
n=100;
X=zeros(3,n) %inizializzazione
X(1, :) = rand(1, n);
X(2, :) = rand(1, n);
X(3, :) = randn(1, n)
b
Distribuzione uniforme
m
rand
0
1
ab

m


2

ba
 
12

a
b
rand  (b  a)  a
Esempio 3:
rand   12  m   3
m=1;
sigma=10;
M=10000
X=rand(1,M)*(sigma*sqrt(12))+m-sigma*sqrt(3)
Esempio 2b
Costruire una matrice con distribuzioni uniformi con diverse medie e
varianze:
• riga 1: media = 1, varianza = 10;
• riga 2: media = 0, varianza = 10;
• riga 3: media = 2, varianza = 1;
m=[1 0 2];
sigma=[10 10 1];
M=100000
X(1,:)=rand(1,M)*(sigma(1)*sqrt(12))+m(1)-sigma(1)*sqrt(3)
X(2,:)=rand(1,M)*(sigma(2)*sqrt(12))+m(2)-sigma(2)*sqrt(3)
X(3,:)=rand(1,M)*(sigma(3)*sqrt(12))+m(3)-sigma(3)*sqrt(3)
Istruzione for
1
for x = 1: p : M
% comandi
end
1
2
4
x=[1 1];
for i = 3:10
x(i)= sum(x);
end
8
16
32
64
Esempio 2c
Ottimizzare il codice dell’Esercizio 2b utilizzando un ciclo for:
m=[100 0 2];
sigma=[10 10 1];
M=100000;
X(1,:)=rand(1,M)*(sigma(1)*sqrt(12))+m(1)-sigma(1)*sqrt(3);
X(2,:)=rand(1,M)*(sigma(2)*sqrt(12))+m(2)-sigma(2)*sqrt(3);
X(3,:)=rand(1,M)*(sigma(3)*sqrt(12))+m(3)-sigma(3)*sqrt(3);
m=[100 0 2];
sigma=[10 10 1];
M=100000;
for i = 1 : length(m)
X(i,:)=rand(1,M)*(sigma(i)*sqrt(12))+m(i)-sigma(i)*sqrt(3);
end
Distribuzione gaussiana
0
m
Esempio:
m=40;
sigma=10;
M=10000;
X=randn(1,M)*sigma+m;
randn   m
Plot
close all
x=1:0.1:20;
y=sin(x);
plot(x,y);
figure();
x=rand(1,100)
plot(x, ’.’);
y=sort(x);
figure(); plot(y);
figure(); plot(y, ’.’);
figure(); plot(y);
hold on
plot(y, ’.’)
subplot(1,3,1);plot(y);subplot(1,3,2);plot(y, ’.’);subplot(1,3,3); stairs(y)
subplot
1
2
3
4
5
6
1
2
subplot(2,3,1);plot(a)
subplot(2,3,2);plot(b)
...
subplot(2,3,6);plot(f)
subplot(1, 2, 1); plot(a);
subplot(1, 2, 2); plot(b);
hist
a=rand(1,100000);
hist(a,100)
b=rand(1,10000);
hist(a)
hist(b,100)
hist(a,100)
a=randn(1,100000);
hist(b)
hist(a)
Esempio 2d
Visualizzare gli istogrammi delle righe della matrice dell’esempio 2c:
m=[100 0 2];
sigma=[10 10 1];
M=100000;
for i = 1 : length(m)
X(i,:)=rand(1,M)*(sigma(i)*sqrt(12))+m(i)-sigma(i)*sqrt(3);
end
figure(); hist(X(1,:));
figure(); hist(X(2,:));
figure(); hist(X(3,:));
figure();
subplot(1,3,1); hist(X(1,:)); subplot(1,3,2); hist(X(2,:)); subplot(1,3,3);hist(X(3,:));
Esempio 2e
Ottimizzare il codice dell’Esercizio 2d utilizzando un ciclo for:
m=[100 0 2];
sigma=[10 10 1];
M=100000;
for i = 1 : length(m)
X(i,:)=rand(1,M)*(sigma(i)*sqrt(12))+m(i)-sigma(i)*sqrt(3);
end
figure();
subplot(1,3,1); hist(X(1,:)); subplot(1,3,2); hist(X(2,:)); subplot(1,3,3);hist(X(3,:));
m=[100 0 2];
sigma=[10 10 1];
M=100000;
figure();
for i = 1 : length(m)
X(i,:)=rand(1,M)*(sigma(i)*sqrt(12))+m(i)-sigma(i)*sqrt(3);
subplot(1,3,i); hist(X(i,:));
end
Scarica

Matlab - Esercitazione 1 - Introduzione