clear all; close all; % Creo una matrice A A = [-3 -2 1; 7 3 1; 11 -5 3] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Indicizzazione di una matrice specificando le posizioni % degli elementi cercati %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Estrai contenuto della prima cella sull'angolo in alto a sx A(1,1) % Estrai contenuto dell'ultima cella sull'angolo in basso a dx A(3,3) A(end,end) % Estrai contenuto della cella sull'angolo in basso a sx A(3,1) A(end,1) % Estrai contenuto della prima colonna A(:,1) % Estrai contenuto della prima riga A(1,:) % Estrai contenuto dell'ultima riga A(end,:) % Estrai la sottomatrice formata dagli elementi che % si trovano all'incrocio della prima e terza riga % e della prima e seconda colonna A([1 3],[1 2]) % Creo una matrice B 8 x 8 B = magic(8) % Estrai la sottomatrice formata dagli elementi che % si trovano all'incrocio fra quinta, sesta, settima, % ottava riga e la prima, seconda, terza colonna B([5:8],[1:3]) % Estrai gli elementi posti sulla prima, terza, quinta % e settima colonna [1:2:8] % Questo e' il vettore che specifica le posizioni 1 3 5 e 7 B(:, [1:2:8]) % Uso questo vettore per specificare la posizione degli elementi cercati % Supponiamo di voler creare una matrice X di N osservazioni % di p variabili casuali. Ciascuna variabile causale deve % essere uniformemente distribuita fra -1 e 1 N = 1000; p = 5; X = (rand(N,p)-.5)*2; % Creiamo ora una variabile dipendente y = a+b*x1+c*x2 a = 3; b = -1; c = 1.5 y = a-b*X(:,1)+c*X(:,2); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Indicizzazione di una matrice mediante una matrice di stati logici %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% A = [-3 -2 1; 7 3 1; 11 -5 3] % Con la sintassi qui sotto ottengo una matrice C delle % stesse dimensioni di A con stati logici 1 e 0 % 0 se la condizione e' falsa, 1 se e' vera C = A > 0 islogical(C) % Posso usare questa matrice per estrarre tutti gli % elementi di A che sono maggiori di 0 A(A>0) % Estraggo tutti gli elementi compresi fra -3 e 3 A(A>=-3 & A<=3) % Estraggo tutti gli elementi sotto -5 o sopra 2 A(A<=-5 | A>=2) %Traccio l'istogramma dei soli valori maggiori di 1.5 % e minori di -1.5 di una variabile gaussiana figure(1) N = 100000; x = randn(N,1); hist(x(x<-1.5 | x>1.5 ),51) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Manipolazione di matrici %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Creo una matrice qualsiasi 8 x 8 A = magic(8) % Pongo a zero l'elemento di posto (1,1) A(1,1)=0 % Pongo a -1 gli elementi ai 4 vertici della matrice A([1 end],[1 end])=-1 % Pongo tutta a zero la prima colonna A(:,1)=0 % Pongo la seconda riga uguale al vettore [1 2 ... 8] A(2,:)=[1:8] % Pongo una sottomatrice 2x2 pari alla matrice B=[3 -3; 4 -4] B = [-3 -4; -5 -6] A([4 5],[4 5]) = B % Pongo gli elementi della diagonale principale pari a [1 2 ... 8] % Fare attenzione a come e' fatta la matrice ~eye(8) ~eye(8) A=diag([1:8])+(~eye(8)).*A % Cancello la terza colonna della matrice A A(:,3)=[] % Cancello la prima e ultima riga della matrice A A([1 end],:)=[] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ed ora ancora un po' di elementi sulla creazione di grafici %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Sovrapporre due grafici con hold on %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N = 10000; x = randn(N,1); y = 3+2*randn(N,1) figure(2) hold on hist(x,100) hist(y,100) hold off %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Realizzare i due istogrammi con due % colori diversi č un po' pių complesso %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [xf,xc]=hist(x,100); [yf,yc]=hist(y,100); figure(2) hold on bar(xc,xf,1,'r') bar(yc,yf,1,'b') hold off %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Grafici di una funzione di 2 variabili % y = cos(x1)*(x2^2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Genero per la variabile x1 un vettore di 50 valori % equispaziati fra -4 e 4 x1 = linspace(-4,4,50); % Genero per la variabile x2 un vettore di 50 valori % equispaziati fra -5 e 5 x2 = linspace(-5,5,50); % Genero ora tutte le possibili coppie di valori (x1,x2) % Genero cioe' la mia griglia di valori per x1 ed x2 % e metto questa griglia nelle matrici X1 e X2 [X1,X2] = meshgrid(x1,x2); % calcolo ora il valore di y per ciascuna di queste % coppie di valori. % Attenzione perche' eseguo operazioni elemento per elemento! Y = cos(X1).*X2.^2; % Produco a questo punto vari tipi di grafici % La superficie della funzione viene tracciata % per mezzo di una rete figure(3) mesh(X1,X2,Y) % La superficie della funzione viene tracciata % per mezzo di un sistema di poligoni colorati figure(4) surf(X1,X2,Y) % La superficie della funzione viene tracciata % per mezzo di un sistema di poligoni colorati % con l'aggiunta di un effetto di sfumatura figure(5) surf(X1,X2,Y) shading interp % Si puo' anche aggiungere una sorgente luminosa % per creare effetti di ombreggiatura figure(6) surfl(X1,X2,Y) shading interp % Aggiungo anche le curve di livello ai due tipi di grafici figure(7) meshc(X1,X2,Y) figure(7) surfc(X1,X2,Y)