Esercitazione 2 – Generazione di variabili Matlab.
-
Upload
alonso-palma -
Category
Documents
-
view
221 -
download
1
Transcript of Esercitazione 2 – Generazione di variabili Matlab.
Esercitazione 2 – Generazione di variabili
Matlab
hist
hist(a,100)
a=rand(1,100000);
hist(a) hist(b,100)
b=rand(1,10000);
hist(b)
hist(a,100)
a=randn(1,100000);
hist(a)
Esempio 2d
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
Visualizzare gli istogrammi delle righe della matrice dell’esempio Visualizzare gli istogrammi delle righe della matrice dell’esempio 2c:2c:
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:Ottimizzare il codice dell’Esercizio 2d utilizzando un ciclo for:
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); figure(); hist(X(i,:)); end
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);endfigure(); hist(X(1,:)); figure(); hist(X(2,:)); figure();hist(X(3,:));
Istruzione if
if expression1 % is true % execute these commands
elseif expression2 % is true
% execute these commands
else % the default % execute these commands
end
Esempio 5: cambiare media e Esempio 5: cambiare media e varianza delle distribuzioni di varianza delle distribuzioni di MATLAB:MATLAB:
m=[100 0 2];sigma=[10 10 1];M=100000;distribuzione = [‘g’ ‘g’ ‘u’];
for i = 1 : length(m)if distribuzione(i) == ‘u’ X(i,:)=rand(1,M)*(sigma(i)*sqrt(12))+m(i)-sigma(i)*sqrt(3);elseif distribuzione(i) == ‘g’ X(i,:)= randn(1,M)*sigma+m;elsedisp(‘errore’);end figure(); hist(X(i,:)); end
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 [n] = doppio (num) n = 2 * num;
x=15x_t = doppio(x);
Dall’editor si salva come “doppio.m”
Sul workspace(o all’interno di un’altra funzione)
Esercizio
Funzione per la generazione di variabili
Esercizio
Trasformare il codice dell’esercizio 2e in una funzione che abbia come ingressi il numero di colonne della matrice X, il vettore delle medie, il vettore delle varianze e il tipo di distribuzione. L’uscita della funzione deve essere la matrice X.
Una volta creata la funzione, questa deve essere richiamata in un file esterno e deve avere come ingressi i seguenti dati:
Devono poi essere visualizzati gli istogrammi delle sue righe e calcolate la media e la varianza.
media=[15 15 100];sigma=[1 10 10];M=100000;distribuzione = [‘g’ ‘g’ ‘u’];
Definizione della funzione
function [X] = generazione (M, media, sigma, distribuzione)
Vogliamo creare una funzione che abbia come ingressi:• il numero di osservazioni;• il vettore delle medie• il vettore delle deviazioni standard• il tipo di distribuzione
E che abbia come unica uscita la matrice X.
Il codice
for i = 1 : length(m) if distribuzione(i) == ‘u’ X(i,:)=rand(1,M)*(sigma(i)*sqrt(12))+m(i)-sigma(i)*sqrt(3); elseif distribuzione(i) == ‘g’ X(i,:)= randn(1,M)*sigma+m; else disp(‘errore’); endend
Utilizzo della funzione
X=generazione(M, media, sigma, distribuzione);
for i = 1 : length(media) figure(); hist(X(:,i)); m_e(i) = mean(X(:,i)); s_e (i) = std(X(:,i));end
media=[15 15 100];sigma=[1 10 10];M=100000;distribuzione = [‘g’ ‘g’ ‘u’];
Un altro esempio (da conservare)
media=[0 0 0 0];sigma=[1 1 1 10];M=1000000;distribuzione = [‘u’ ‘u’ ‘u’ ‘u’];
Esercizio
Dato il vettore:
[3 4 2 0 5 3 5 5 2 4 3 2 6 1 4 4 4 1 2 5 100]
calcolarne media e mediano.
Escludere l’ultimo elemento del vettore e ripetere nuovamente l’operazione.
Costruire l’istogramma manualmente. (Utilizzare la funzione bar per graficarlo)