Category Archives: Matlab

Struttura switch e case in Matlab

MATLAB

La struttura switch e case in Matlab ci consente di eseguire gruppi di istruzioni basati sul valore di un variabile o di un’espressione. La keywords case e otherwise delinea i gruppi. Solamente il primo caso è eseguito. Ci deve essere sempre una parola chiave end per lo statement switch .

La logica dell’algoritmo della matrice magic square può, ad esempio, essere descritta anche con il seguente codice Matlab:

switch (rem(n,4)==0) + (rem(n,2)==0)
  case 0
    M = odd_magic(n)
  case 1
    M = single_even_magic(n)
  case 2
    M = double_even_magic(n)
  otherwise
    error('This is impossible')
end

Diversamente dal linguaggio C, lo switch di MATLAB non commette errori. Se la prima istruzione del costrutto case risulta vera, il restante case statement non è eseguito. Così, non si rendono necessari break statement.

Vediamo ora un altro esempio in cui si visualizza un altro testo condizionale, in funzione di un valore immesso al prompt dei comandi.

n = input('Inserisci un numero: ');

switch n
    case -1
        disp('negativo')
    case 0
        disp('zero')
    case 1
        disp('positivo')
    otherwise
        disp('altro valore')
end

La struttura switch e case in Matlab

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Istruzione IF in Matlab

MATLAB

L’istruzione if in Matlab valuta un’espressione logica ed esegue un gruppo di asserzioni quando l’espressione risulta vera. L’else if opzionale e altre keywords provvedono per l’esecuzione di gruppi alternati di asserzioni. Una keyword END termina l’ultimo gruppo di asserzioni. I gruppi di asserzioni sono delineati da quattro keywords non sono previste parentesi.

L’algoritmo di MATLAB per generare una magic square di ordine n coinvolge tre casi diversi:

  1. quando n è dispari,
  2. quando n è pari ma non divisibile per 4,
  3. quando n è divisibile per

Questo è quanto riportato nel costrutto seguente:

if rem(n,2) ~= 0
   M = odd_magic(n)
elseif rem(n,4) ~= 0
   M = single_even_magic(n)
else
   M = double_even_magic(n)
end

In questo esempio, i tre casi sono mutuamente esclusivi, ma se non lo fossero, la prima condizione vera sarebbe comunque eseguita. Tutto ciò è importante per capire come gli operatori relazionali e le strutture if lavorano con le matrici.

Quando si vuole controllare l’uguaglianza tra due variabile, usare:

if A == B, ….

Questo è consentito in MATLAB, e fa quello che ci si aspetta quando A e B sono scalari. Ma quando A e B sono matrici, A == B non esamina se loro sono uguali, esamina solo dove loro sono uguali; il risultato è un altra matrice di 0 e di 1 che espone l’uguaglianza elemento per elemento.

Istruzione IF in Matlab

Infatti, se A e B non sono della stessa taglia, allora l’istruzione A == B è un errore. Il modo corretto per controllare l’uguaglianza tra due variabile è quello di usare la funzione isequal:

if isequal(A,B), …

Qui c’è un altro esempio per enfatizzare questo punto. Se A e B sono scalari, il programma seguente mai arriverà alla situazione inaspettata. Ma per la maggior parte delle matrici, includendo le nostre magic square con colonne scambiate nessuna delle condizioni seguenti A> B, A< B o A == B è vero per tutti gli elementi e così l’altra clausola è eseguita.

if A > B
   ‘greater’
elseif A < B
   ‘less’
elseif A == B
   ‘equal’
else
   error(‘Unexpected situation’)
end

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Il Comando DIARY in Matlab

MATLAB

Il comando diary in Matlab crea un’agenda della sessione di MATLAB in un file immagazzinato nel disco fisso del computer. E’ possibile esplorare e compilare il file di testo con un qualsiasi word-processor. Per creare un file diary che contenga tutti i comandi basterà digitare al prompt di Matlab:

>>diary

Per salvare l’intera sessione di MATLAB in un archivio con un particolare nome, utilizzeremo la seguente notazione:

>>diary filename

Per bloccare la registrazione della sessione corrente, invece digiteremo:

>>diary off

La funzione diary quindi crea un elenco degli input da tastiera e registra il testo risultante in un file, con alcune eccezioni. Il file ottenuto con il comando diary è un file ASCII, adatto per la ricerca in, la stampa, l’inserimento nella maggior parte delle relazioni e altri documenti. Se non si specifica il nome del file, il software MATLAB crea un file chiamato diary nella cartella corrente.

Il Comando DIARY in Matlab

Il comando diary (‘filename’) scrive una copia di tutti gli input da tastiera successivi al comando nel file chiamato appunto nomefile, dove nomefile è il percorso completo o il nome del file si trova nella cartella MATLAB corrente. Se il file esiste già, l’output viene aggiunto alla fine del file. Non è possibile utilizzare un nome di file chiamato o disattivarlo. Per visualizzare il nome del file diary corrente, utilizzare il comando:

>>get (0, ‘DiaryFile’)

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Il comando dir in Matlab

MATLABAnalizziamo il comando dir in Matlab che elenca i file e le cartelle presenti nella cartella corrente di MATLAB. I risultati vengono visualizzati in un ordine che dipende dal sistema operativo.

Il comando seguente:

> dir nome

elenca i file e le cartelle che corrispondono al nome fornito sottoforma di stringa. Quando il nome è una cartella, dir elenca il contenuto della cartella. Specificare il nome usando i nomi di percorso assoluti o relativi. È possibile utilizzare i caratteri jolly (*). Il comando:

lista = dir (nome)

restituisce gli attributi relativi a nome.

il comando dir in matlab

Vediamo alcuni esempi di applicazione del comando dir in Matlab, per visualizzare il contenuto della cartella matlab/audiovideo scriveremo, che si trova nella cartella corrente di Matlab:

dir(fullfile(matlabroot, ‘toolbox/matlab/acustica’))

Vediamo invece come ricercare delle informazioni ed ottenere i risultati in una forma strutturata: ad esempio se volessimo immagazzinare nella variabile files tutti i file contenuti in una specifica cartella con esetensione .m scriveremo

files = dir(fullfile(matlabroot, ‘toolbox/matlab/acustica/*.m’))

MATLAB fornisce le informazioni in un structure array del tipo:

files =
25×1 struct array with fields:
name
date
bytes
isdir
datenum

Per accedere ad uno specifico item invece scriveremo:

files(3).name
ans =
acustica.m

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Il comando path in Matlab

MATLAB
Il comando path in Matlab ci permette di visualizzare il percorso di ricerca all’interno dell’ambiente Matlab. Infatti MATLAB utilizza un percorso di ricerca, come un elenco ordinato di directory per determinare come eseguire le funzioni chiamate.

Quando cioè si chiama una funzione standard, MATLAB esegue la prima funzione contenuta
nel primo M-file con quel nome che troverà sul percorso di ricerca di default. Per visualizzare il percorso di ricerca impostato, possiamo utilizzare il seguente comando:

path

che mostra appunto il percorso di ricerca su qualsiasi piattaforma. Per modificare il percorso di ricerca impostato, possiamo utilizzare il seguente comando:

path(‘nuovopath’)

cambia il percorso di ricerca in nuovopath, dove nuovopath è un string array contenente tutte le cartelle che fanno aprte del percorso di ricerca.

matlab

Il comando:

path (path, ‘nuovopath’)

aggiunge la cartella nuovopath alla fine del percorso di ricerca. Se nuovopath è già nel percorso di ricerca, esso viene spostato alla fine del percorso di ricerca. Il comando:

path (‘nuovopath’, path)

aggiunge la cartella nuovopath nella parte superiore del percorso di ricerca. Se nuovopath è già nel percorso di ricerca, esso viene spostato nella parte superiore del percorso di ricerca. Per aggiungere più cartelle in una sola dichiarazione, é possibile utilizzare il comando addpath. Il comando:

a = path

attribuisce il percorso di ricerca alla variabile di tipo stringa a.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Il comando SAVE in Matlab

MATLAB
Il comando SAVE in Matlab salva i contenuti del workspace in un file con estensione .mat che può essere letto attraverso il comando LOAD in una sessione successiva di MATLAB. Per esempio scrivendo la seguente istruzione al prompt di Matlab:

save sessione

si salva il workspace intero nel file sessione.m. In realtà volendo si può salvare solamente una certa variabile specificando il nome dopo aver specificato filename. Di default, la variabile è salvata in una configurazione binaria che può essere letta rapidamente e accuratamente da MATLAB.

Se si vuole accedere a questi file al di fuori di MATLAB, si può specificare una configurazione alternativa, ad esempio una delle seguenti:

  • -ascii Use 8-digit text format.
  • -ascii-double Use 16-digit text format.
  • -ascii-double -tabs Delimit array elements with tabs.
  • -v4 Create a file for MATLABversion 4.
  • -append Append data to an existing MAT-file.

Quando si salva il workspace in configurazione testo, si dovrebbe salvare una sola variabile alla volta. Se invece si salva più di una variabile, MATLAB creerà il file di testo, ma non sarà capace di caricarlo in MATLAB.

matlab

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Il workspace di Matlab

MATLAB

Il workspace di Matlab rappresenta l’area di memoria accessibile dal prompt di MATLAB. Il workspace di Matlab quindi rappresenta in sostanza la nostar area di lavoro, un’interfaccia utente grafica che consente di visualizzare e gestire il contenuto del lavoro eseguito nella sessione corrente di MATLAB.

Il Workspace inoltre visualizza e aggiorna i calcoli statistici per ciascuna variabile, che è possibile scegliere di mostrare o nascondere automaticamente.

I due comandi who e whos, mostrano i contenuti correnti del workspace. Il comando who in particolare fornisce un elenco corto del suo contenuto, mentre whos fornisce anche dimensioni e informazioni delle varibili in esso definite.

Di seguito è mostrata il risultato prodotto dal comando whos su un workspace che contiene risultati di alcuni degli esempi in questo tutorial.

whos
Name Size Bytes Class
A 4x4 128 double array
D 5x3 120 double array
M 10x1 3816 cell array
S 1x3 442 struct array
h 1x11 22 char array
n 1x1 8 double array
s 1x5 10 char array
v 2x5 20 char array
Grand total is 471 elements using 4566 bytes.

È possibile modificare un valore direttamente nel browser Workspace per piccole matrici numeriche e di caratteri. Per visualizzare e modificare variabili più grandi e per altre categorie, fare doppio clic sulla variabile nel browser Workspace.

matlab

Si aprirà in questo modo il display variabili nell’editor variabili, dove sarà possibile visualizzare l’intero contenuto e apportare modifiche. Per cancellare tutte le variabili esistente dal workspace, utilizzare il comando clear.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Documentazione su Matlab

MATLAB

Per reperire della documentazione su Matlab davvero esauriente è necessario visitare il sito della Mathworks, società distributrice ufficiale del software ala seguente url:

http://www.mathworks.it/it/help/matlab/

A partire dalla pagina principale sarà possibile consultare una serie davvero ricca di documenti che abbracciano i più svariati argomenti, di seguito ne riporto solo una lista sintetica:

  • Getting Started with MATLAB
  • MATLAB Examples
  • Release Notes
  • Functions
  • Language Fundamentals
  • Mathematics
  • Graphics
  • Programming Scripts and Functions
  • Data and File Management
  • GUI Building
  • Advanced Software Development
  • Desktop Environment

Tutta la documentazione è proposta in lingua inglese e si può consultare con il browser online oppure scaricabile in formato pdf per la consultazione offline o per la stampa.

matlab

Ogni argomento viene trattato in modo semplice ed esaustivo con un corredo davvero significativo di esempi per meglio comprendere i concetti appena introdotti.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Cercare file e cartelle in Matlab

MATLAB
E’ possibile cercare file e cartelle in Matlab in modo semplice ed immediato, infatti se si conosce il nome del file che si desidera trovare, basterà iniziare a digitare i primi caratteri del nome nel browser della cartella corrente. Mentre si digita, il browser cartella corrente cerca verso il basso dalla parte superiore della finestra, guardando attraverso tutte le cartelle espanse.

In alternativa, per trovare una serie di caratteri in qualsiasi parte del nome di un file contenuto nel filesystem del computer potremo seguire le seguenti azioni:

  • Fare clic sul pulsante di ricerca nella barra degli strumenti della cartella corrente. La barra degli indirizzi diventa un campo di ricerca.
  • Digitare una parte del nome del file. Il carattere asterisco (*) è un carattere jolly. Ad esempio, per mostrare solo i nomi di file che iniziano con mat e hanno un’estensione .m, tipo mat * .m.
  • Premere Invio.

MATLAB allora visualizza tutti i file all’interno della cartella corrente (comprese le sue sottocartelle) che forniscono un match con il nome del file. Se è stato digitato il percorso completo di una cartella, la cartella diventa la cartella corrente.

matlab

Sarà possibile poi cancellare i risultati e visualizzare tutti gli elementi nella cartella corrente semplicemente premendo il tasto Esc.

Per aprire la cartella corrente nel browser, se non è già aperta, bisogna effettuare le seguenti operazioni:

  • nella scheda Home, nella sezione Environment, fare clic su Layout.
  • Poi, sotto Show, selezionare la cartella corrente.
  • Per mostrare e nascondere le colonne, o ordinare e raggruppare colonne basterà fare clic, e quindi selezionare un’opzione.

Se si rende necessario effetturae una ricerca avanzata per i file potremo utilizzare lo strumento Trova file che ci permette di:

  • Cercare una stringa specificata nei nomi di file e nei file
  • Includere o escludere tipi di file specificati dalla ricerca
  • Cercare in cartelle specificate
  • Escludere file di grandi dimensioni dalla ricerca

Per effettuare una ricerca avanzata per i file, aprire lo strumento Trova file. Nella scheda Home, nella sezione File, fare clic su Trova file. Inserire i criteri di ricerca nella finestra di dialogo che si apre ed il gioco è fatto.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Il comando lookfor in Matlab

MATLAB

Il comando lookfor in Matlab ci consente di cercare funzioni attraverso una keyword. Ad esempio, MATLAB non ha una funzione chiamata inverse. Così la risposta alla prossima istruzione sarà:

help inverse
inverse.m not found.

Invece digitando:

lookfor inverse

verrà effettuata una ricerca con una dozzina di matchs. Il risultato dipende da quanti toolboxes si è installato sul proprio computer, si otterrà ad esempio come risultato della ricerca qualcosa del tipo:

INVHILB Inverse Hilbert matrix.
ACOSH Inverse hyperbolic cosine.
ERFINV Inverseof the error function.
INV Matrix inverse.
PINV Pseudoinverse.
IFFT Inverse discrete Fourier transform.
IFFT2 Two-dimensional inverse discrete Fourier transform.
ICCEPS Inverse complex cepstrum.
IDCT Inverse discrete cosine transform.

dove ogni riga restituita rappresenta un link ad informazioni contenute nella documentazione di Matlab e basterà cliccarsi sopra per accedere alla risorsa. Aggiungendo l’opzione -all al comando lookfor, come indicato nella seguente istruzione:

lookfor -all

si ricercherà l’intero input,e non solo la prima linea indicata.

matlab

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

La Finestra Help in Matlab

MATLAB

In MATLAB è disponibile una finestra Help, attivabile su PCs e Macs selezionando l’opzione Help Window nel menu Help, o cliccando sul punto interrogativo sulla sbarra del menu. E’ anche disponibile su tutti i computer digitando:

helpwin

Per usare la finestra d’aiuto su un particolare tema, digitare:

helpwin topic

La finestra d’aiuto accede alle stesse informazioni come il comando HELP, ma l’interfaccia della finestra prevede collegamenti agli altri temi.

matlab

Attraverso la finsestra Help sarà possibile consultare tutta la documentazione chje viene fornita a corredo del software; in particolare sarà possibile consultare la documentazione relativa ad ogni toolbox installato sul nostro computer.

Inoltre, in coerenza con quanto fornito dal nostro sistema operativo, sarà possibile altresì effettuare delle ricerche per parola chiave, in modo da velocizzare la ricerca delle informazioni che ci necessitano.

Mentre come accade per ogni aiuto in linea sarà possibile consultare la documentazione cercando le informazioni dall’indice del menu.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO: