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=[ ]; sigma=[ ]; 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 dellesempio 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 dellEsercizio 2d utilizzando un ciclo for: m=[ ]; sigma=[ ]; 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=[ ]; sigma=[ ]; 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,:));
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 varianza delle distribuzioni di MATLAB: m=[ ]; sigma=[ ]; 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; else disp(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=15 x_t = doppio(x); Dalleditor si salva come doppio.m Sul workspace (o allinterno di unaltra funzione)
Esercizio Funzione per la generazione di variabili
Esercizio Trasformare il codice dellesercizio 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. Luscita 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=[ ]; sigma=[ ]; 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); end
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=[ ]; sigma=[ ]; M=100000; distribuzione = [g g u];
Un altro esempio (da conservare) media=[ ]; sigma=[ ]; M= ; distribuzione = [u u u u];
Esercizio Dato il vettore: [ ] calcolarne media e mediano. Escludere lultimo elemento del vettore e ripetere nuovamente loperazione. Costruire listogramma manualmente. (Utilizzare la funzione bar per graficarlo)