Semplificarsi la vita con MATLAB

spyScrivo questo breve articolo per suggerirvi qualche trucchetto che può semplificarvi la vita lavorando con MATLAB.

Cerca su Google da command window

Molto spesso mi capita di dover cercare rapidamente qualcosa su Google, mentre lavoro nella console di MATLAB. Specialmente quando lavoro sul netbook, dove ho davvero poca RAM disponibile, aprire Chrome per una rapida ricerca è davvero un supplizio.
Allora ho pensato: perché non utilizzare il browser integrato in MATLAB?
Detto fatto.

Ecco una semplice funzione che richiama il browser integrato per effettuare ricerche immediate:
Download google.zip
Mostra codice ▼

In questo modo basterà digitare google(‘oggetto da cercare’) per aprire il browser di MATLAB.

No, I do mean Wirgilio!

.

Avvia il debug durante l’esecuzione

Durante l’esecuzione di script molto lunghi è fondamentale essere sicuri che il codice stia funzionando correttamente. MATLAB mette a disposizione un comando molto utile che permette di investigare durante l’esecuzione del codice: keyboard.

Il comando è molto semplice è intuitivo, ma il problema è: come faccio ad attivarlo quando decido io? Ad esempio, sto osservando i risultati di uno script ogni tot iterazioni attraverso una figura, quando mi accorgo che qualcosa sta andando storto e voglio avviare il debug. Come fare?
L’idea è quella di utilizzare una variabile presente all’interno delle figure, ossia CurrentCharacter. Quando si preme un tasto della tastiera attraverso una figure, la variable CurrentCharacter assume il valore pari al tasto premuto.

Con una semplice riga si può quindi avviare il debug premendo un tasto della tastiera, in questo caso la lettera k.

if get(gcf,'CurrentCharacter') == 'k', keyboard, end

Per continuare l’esecuzione sarà sufficiente chiudere la figura e premere F5.

Esempio di utilizzo:
Mostra codice ▼

.

Focus delle figure

Quando una figure di MATLAB viene selezionata, questa acquisice il focus e viene mostrata davanti a tutte le altre finestre. Se si sta lavorando al codice durante l’esecuzione, può succedere che il continuo apparire delle figure ci impedisca di fare qualsiasi altra cosa.

Una possibile soluzione è quella di utilizzare la funzione set per cambiare la figura attiva, invece del classico figure().

Esempio di utilizzo:
Mostra codice ▼

.

Figure a schermo intero

Un altro comando che utilizzo molto spesso è quello che permette di aprire una figure a schermo intero. Il trucco è definire le unità normalizzate quando si crea la figura:

figure('Units','normalized','Position',[0 0 1 1])

L’attributo Position richiede un array di quattro valori: [Posizione_x, Posizione_y, Larghezza, Altezza]. Utilizzando le unità normalizzate sarà sufficiente inserire valori unitari per larghezza e altezza.
Questo tipo di unità permette anche una più agevole disposizione delle figure sullo schermo, indipendentemente dalle sue dimensioni.

Esempio di utilizzo:
Mostra codice ▼

finestre

 

.

Barra di caricamento

Una delle funzioni che adoro di MATLAB è senza dubbio la waitbar.
Ideale quando un codice richiede più di qualche istante per essere eseguito!

L’utilizzo è estremamente semplice, riporto direttamente l’esempio dall’help di MATLAB:

h = waitbar(0,'Please wait...');
for i=1:1000,
% computation here %
waitbar(i/1000,h)
end

Se le iterazioni sono molto rapide, come nel codice dell’esempio, la chiamata a waitbar può essere più lenta del calcolo che viene effettuato durante l’iterazione stessa e può rallentare drasticamente l’esecuzione del codice! Per evitare ciò, vi consiglio di utilizzare sempre una condizione che aggiorni la waitbar un numero sensato di volte:

h = waitbar(0,'Please wait...');
 for i=1:1000,
     % computation here %
     if mod(i, 100) == 0
        % Questo codice viene eseguito solo ogni 100 iterazioni
        waitbar(i/1000,h)
     end
 end

wait