Tag Archives: esercizi matlab

Visualizzazione di una funzione in due variabili in Matlab

MATLAB

Per visualizzare una funzione di due variabile in Matlab, ad esempio la funzione z = f (x,y), è necessario innanzitutto generare due matrici X e Y costituite di righe e colonne ripetute, rispettivamente, sul dominio della funzione.

Poi bisogna utilizzare queste matrici per valutare e tracciare la funzione. La funzione meshgrid trasforma nel dominio specifico, un singolo vettore o due vettori x e y in matrici X e Y per usarle nella valutazione della funzione di due variabili.

Le righe di X sono copie del vettore x e le colonne di Y sono copie del vettore y. Per valutare la funzione bidimensionale sin(r)/r, lungo le due direzioni x e y si procede nel modo seguente:

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)

matlab

In questo esempio, R rappresenta la distanza dall’ origine che è al centro della matrice. Aggiungere il valore eps evita l’indeterminato 0/0 che altrimenti si verrebbe a verificare all’origine.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Grafici di matrici in Matlab

MATLAB

In questa lezione impareremo a realizzare dei grafici di matrici in Matlab. Quando si invoca la funzione plot con argomento una singola matrice:

plot(Y)

Matlab traccia una curva per ogni colonna della matrice utilizzando come indice per l’asse x il numero di righe della matrice. Ad esempio:

Z=peaks;

fornisce una matrice 49X49 ottenuta valutando una funzione di due variabili. Il diagramma della matrice ottenibile attraverso il seguente comando:

plot(Z)

produce un grafico di 49 linee, che di seguito riportiamo.

matlab

Se il comando plot è usato con due argomenti e se X e Y hanno più di una riga o una colonna allora si possono verificare le seguenti condizioni:

 

  •  Se Y è una matrice e X un vettore, plot(X,Y) traccia un diagramma delle righe o delle colonne di Y verso il vettore X, utilizzando colori o tipi di linea differenti per ogni curva.
  • Se X è una matrice ed Y un vettore, plot(X,Y) traccia una curva per ogni riga o colonna di X rispetto ad Y.

Ad esempio, diagrammando la matrice peaks rispetto al vettore 1:length(peaks) si ottiene un diagramma ruotato rispetto a quello precedente:

Y=1:length(peaks);
plot(peaks,Y)

In questo modo si ottiene il seguente grafico.

matlab

Se infine X ed Y sono matrici delle stesse dimensioni allora plot(X,Y) fornisce un diagramma delle colonne di X rispetto alle colonne di Y.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Stampa dei grafici in Matlab

MATLAB

La funzione print ci consente la stampa dei grafici in Matlab, il suo utilizzo è particolarmente semplice in quanto la sua sintassi risulta immediata:

print(argomento1, argomento2,..)

L’opzione PRINT sul menu file ed il comando print stampano la figura creata da MATLAB. Il menu print apre una finestra di dialogo che offre le opzioni di stampa di default. Il comando print prevede invece più flessibilità nel tipo di output e permette di controllare la stampa da M-file.

Il risultato può essere trasmesso direttamente alla stampante di default o può essere immagazzinato in un specifico file. Una larga varietà di configurazioni di stampa, incluso Poscript è disponibile.

Per esempio, il seguente comando salva i contenuti della finestra della figura corrente come, color Encapsulated Level 2 PostScript nel file chiamato figura.eps:

print -depsc2 figura.eps

matlab

E’ importante sapere le capacità della stampante prima di usare il comando stampa. Per esempio, i file Level 2 Postscript generalmente sono più piccoli e sono più rapidi da stampare rispetto a Level 1 Postscript files. Comunque, non tutte le Stampanti postscript sostengono Level 2, è importante quindi prima di mandare in stampa un grafico conoscere le potenzialità della propria stampante.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Grafici di numeri complessi in Matlab

MATLAB

E’ possibile creare dei grafici di numeri complessi in Matlab in modo semplice ed immediato. Se Z è un vettore di numeri complessi, Matlab traccia la parte immaginaria in funzione di quella reale. Allora digitando,

plot(Z)

dove Z è un vettore complesso o matrice, non avremo fatto altro che digitare:

plot(real(Z),imag(Z))

Per esempio:

t = 0:pi/8:2*pi;
plot(exp(i*t), ‘ -o ‘)

traccia un poligono di 16 lati con cerchietti ai vertici.

matlab

Quando i dati da plottare sono complessi ad esempio nel caso due numeri complessi x ed y, il comando plot(x,y), traccia una curva utilizzando solo ed esclusivamente la parte reale dei numeri mentre la parte immaginaria è ignorata eccetto quando il tracciato è dato da un singolo argomento complesso. Per questo caso speciale, il comando da utilizzare per tracciare la parte reale contro la parte immaginaria è shortcut .

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Come salvare dati in immagini con Matlab

MATLAB

In questa lezione impareremo a salvare dati in immagini con Matlab. Per fare questo utilizzeremo la funzione imwrite che scrive i dati immagine contenuti nella matrice A nel file specificato da filename, deducendo il formato di file dall’estensione. La funzione imwrite crea il nuovo file nella cartella corrente.

La sitassi del comando è la seguente:

imwrite(A,filename)

dove A è la matrice di dati di tipo immagine e filename è il nome del file in cui vogliamo salvare l’immagine. La profondità di bit dell’immagine di output dipende dal tipo di dati contenuti in A e dal formato del file. Per la maggior parte dei formati accade che:

  •  Se A contiene dati del tipo uint8, allora imwrite fornisce valori a 8 bit.
  •  Se A è del tipo di dati UINT16 e il formato del file di output supporta i dati a 16 bit (JPEG, PNG, e TIFF), allora  imwrite fornisce valori a 16 bit. Se il formato del file di output non supporta i dati a 16 bit, la  funzione imwrite fornisce un segnale di errore.
  •  Se A è un’immagine a scala di grigi o del tipo RGB con dati del tipo doppia o singola precisione, allora  la funzione imwrite assume la gamma dinamica nell’intervallo [0,1] e bilancia automaticamente i dati tra 0 e 255 prima di scrivere il file con valori a 8 bit.
  •  Se A è del tipo di dati logico, allora  imwrite assume che il dato è un’immagine binaria e lo scrive nel file con una profondità di bit pari a 1, se il formato lo consente. Formati di immagini del tipo BMP, PNG o TIFF accettano immagini binarie come array di input.
  • Se A contiene dati di immagine indicizzati, è necessario inoltre specificare l’argomento mappa di input.

matlab

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Come importare immagini in Matlab

MATLAB

Per importare immagini in Matlab è necessario utilizzare la funzione imread che per l’appunto ci permette di importare un’immagine, depositata nel filesystem del nostro computer, nel workspace di Matlab. Vediamo allora la sintassi della funzione:

imread(‘nomefile.estensione’);

In questo modo l’immagine sarà allocata nella variabile ans, nel caso in cui volessimo attribuirla ad una specifica variabile scriveremo:

A = imread(‘nomefile.estensione’);

Così la variabile A sarà costituita da una matrice  di dimensioni mxn, con m numero di righe che rappresenta l’altezza, in pixel, dell’immagine) mentre n numero di colonne che rappresenta la larghezza, in pixel, dell’immagine. Ogni cella della matrice risulterà invocabile con il seguente comando:

A(x,y)

dove x e y sono le coordinate del pixel nell’immagine. La cella invocata conterrà il valore associato a quel pixel se la nostra immagine è in scala di grigi in bianco e nero.

matlab

Matlab supporta i seguenti formati di immagini:

  • BMP (Microsoft® Windows® Bitmap)
  • GIF (Graphics Interchange Files)
  • HDF (Hierarchical Data Format)
  • JPEG (Joint Photographic Experts Group)
  • PCX (Paintbrush)
  • PNG (Portable Network Graphics)
  • TIFF (Tagged Image File Format)
  • XWD (X Window Dump)

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Titolo ed etichette degli assi in Matlab

MATLAB

In questa lezione impareremo ad aggiungere un titolo e delle etichette degli assi in un diagramma Matlab. Le funzioni xlabel, ylabel, e zlabel, per l’appunto, aggiungono etichette agli assi x , y , z. Mentre la funzione title aggiunge un titolo nella parte alta della figura e la funzione text inserisce testo dovunque nella figura.

Un sottoinsieme di notazione di Tex produce lettere greche, simboli matematici, e fonti alternate. L’esempio seguente usa i simboli \leq per <=, \pi per , e \it per fonte corsiva. Analizziamolo nel dettaglio:

t = -pi:pi/100:pi;
y = sin(t);
plot(t,y)
axis([-pi pi -1 1])
xlabel(‘-\pi \leq \itt \leq \pi’)
ylabel(‘sin(t)’)
title(‘Grafico della funzione sin’)
text(1,-1/3,’\it{Funzione dispari}’)

Tali comandi producono il seguente diagramma:

matlab

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Impostare gli assi di un diagramma in Matlab

MATLAB

La funzione axis ci permette di impostare gli assi di un diagramma in Matlab, ha un numero di opzioni per personalizzare la misurazione in scala, l’orientamento, ed il rapporto d’aspetto dei tracciati.

La funzione MATLAB opera nel seguente modo: trova i massimi e minimi dei dati e sceglie una plot-box adatta a tale intervallo di valori, quindi identifica gli assi con delle label. La funzione axis ha la priorità di default, per personalizzare i limiti degli assi.

La funzione axis ha una sintassi del tipo:

axis([xmin xmax ymin ymax])

La funzione axis inoltre accetta anche un numero di keywords per il controllo degli assi. Per esempio:

axis square

impone che i due assi abbiano la stessa lunghezza

axis equal

impone che gli incrementi per ogni marchio su x e y siano uguali. Così se decidiamo di rappresentare dei numeri complessi con il comando, che traccia un poligono di 16 lati:

plot(exp(i*t))

tale comando seguito da axis square o axis equal, trasforma il poligono di forma ovale in un corretto cerchio.

matlab

Infine:

axis auto

restituisce l’asse in scala default, in maniera automatica.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Tracciati multipli nella stessa finestra in Matlab

MATLAB

La funzione subplot permette di esporre tracciati multipli nella stessa finestra in Matlab o li stampa sullo stesso pezzo di carta, digitando:

subplot(m,n,p)

trasforma la finestra della figura in una matrice m-X-n di piccoli subplots e seleziona il pth sub plot come plot corrente.I tracciati (plot) sono numerati prima lungo la prima fila della finestra della figura, poi la seconda fila e così via.

Per esempio, scomporre il tracciato di dati in quattro subregions diversi della finestra della figura, nell’esempio trattato si tracciano i grafici delle seguenti funzioni: sin, cos, tan, atan;

t = 0:pi/10:2*pi;

y = sin(t);

subplot(2,2,1)

plot(t,y)

y1=cos(t);

subplot(2,2,2)

plot(t,y1)

y2=tan(t);

subplot(2,2,3)

plot(t,y2)

y3=atan(t);

subplot(2,2,4)

plot(t,y3)

print -dbmp16m figura.bmp

L’ultima istruzione salva la figura nel file figura.bmp (24-bit .BMP file format) il quale potrà essere inserito in documenti html.

matlab

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Come aggiungere un tracciato ad un grafico in Matlab

MATLAB

La funzione plot apre automaticamente una nuova finestra della figura se non c’`e ne sono già sullo schermo. Se una finestra della figura esiste, la funzione plot usa tale finestra di default. Per aprire una finestra nuova e renderla la finestra corrente è necessario digitare:

figure

Per trasformare una figura esistente in finestra corrente, digitare:

 figure(n)

 dove n è il numero nella barra del titolo della figura.

Per aggiungere un tracciato ad un grafico esistente bisogna utilizzare il comando HOLD che permette appunto di aggiungere tracciati ad un grafico esistente. Quando si digita:

 hold on

MATLAB non rimuove il grafico esistente; aggiunge i dati nuovi al grafico corrente, e riscala se necessario.

matlab

Per esempio, il comando seguente prima crea un tracciato della funzione sin in colore blu e con il marcatore *, poi sovrappone un tracciato per la funzione cos in colore rosso e con il marcatore o:

t = 0:pi/100:2*pi;

y = sin(t);

plot(t,y,’*’)

z=cos(t);

hold on

plot(t,z,’r:o’)

Il comando hold on fa si che il primo tracciato sia combinato col secondo tracciato in figura.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Grafici multipli in Matlab

MATLAB

Per tracciare grafici multipli in Matlab è possibile indicare diverse coppie di x-y con una singola chiamata. MATLAB allora in modo del tutto automatico traccia i diversi grafici attraverso un predefinito (ma settabile dall’utente) elenco di colori che permette di distinguere ciascuna collezione di dati.

Per esempio, i seguenti comandi tracciano quattro funzioni di t, ciascuna curva in un colore diverso:

y2 = sin(t – .40);

y3 = sin(t – .8);

y4 = sin(t – 1.2);

plot(t,y,t,y2,t,y3,t,y4)

E’ possibile specificare colore, stile della linea, e marcatori, con segnali positivi o cerchi, attraverso il seguente comando:

plot(x,y, ‘marcatore-stile-colore’)

dove il marcatore-stile-colore è costiutito da una sequenza di 1 , 2 , o 3 caratteri (separati da virgolette)che rappresentano un colore, uno stile di linea , ed un tipo di marcatore; tipi di colore sono:

 ’c’, ’m’, ’y’, ’r’, ’g’, ’b’, ’w’, e ’k’

Questi corrispondono a cyan, magenta, giallo, rosso, verde, azzurro, bianco, e nero.

matlab

Stringhe che ci permettono di stabilire lo stile con cui viene tracciata la linea sono:

  •  ’-’ per la linea continua
  • ’- -’ per la linea tratteggiata
  • ’:’ per una linea a puntini
  • ’-.’ per una linea a puntini e tratteggio
  • ’none’ senza linea.

 Tipi di marcatore comuni sono:

 ’+’, ’o’, ’*’, ’x’

 Per esempio, il comando:

 plot(x,y, ‘ y:+ ‘)

traccia in giallo una linea a puntini e pone un marcatore + a ciascun dato. Se si specifica un tipo di marcatore ma non uno stile di linea, MATLAB disegna solamente il marcatore.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO: