Category Archives: Matlab

Il comando Help in Matlab

MATLAB

Ci sono diversi modi diversi per accedere ad informazioni online sulle funzioni di MATLAB, uno di questi e forse quello più immediato è il comando Help in Matlab. Possiamo appunto avere informazioni sull’uso del software attraverso i seguenti servizi:

  • Il comando HELP
  •  La finestra di aiuto
  •  Il MATLAB Help Desk
  •  Le pagine online
  •  Il Comando Help

Il comando Help, come già anticipato,  rappresenta il modo più semplice per determinare la sintassi ed il comportamento di una particolare funzione in quanto le informazioni sono esposte direttamente nella finestra di comando. Per esempio digitando:

help magic

si ottiene il seguente risultato:

MAGIC Magic square.
MAGIC(N) is an N-by-N matrix constructed from
the integers 1 through N^2 with equal row,
column, and diagonal sums.
Produces valid magic squares for N = 1,3,4,5….

Il MATLAB help usa caratteri maiuscoli per i nomi di funzioni e variabili per fare si che siano messe in rilievo dal resto del testo. Quando si digita il nome di una funzione ,è  bene utilizzare sempre i corrispondenti caratteri minuscoli perchè MATLAB è case sensible e tutte le funzioni sono in lowercase.

Tutte le funzioni di MATLAB sono organizzate in gruppi logici, e la struttura dell’elenco di MATLAB è basata su questo raggruppamento. Per esempio, tutte le funzioni lineari algebriche risiedono nell’elenco matfun.

matlab

Per elencare i nomi di tutti le funzioni in quell’elenco, con una breve descrizione digitare:

help matfun

ottenendo in questo modo al prompt di matlab:

Matrix functions – numerical linear algebra.
Matrix analysis. norm – Matrix or vector norm. normest – Estimate the matrix
2-norm …

Digitando al prompt di Matlab il seguente comnado:

help

si ottiene l’elenco completo di tutte le funzioni inserite nella distribuzione di Matlab, con una descrizione della categoria della funzione.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

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: