martedì 18 maggio 2010

GUI con Matlab

Ultimamente mi trastullo a creare GUI con Matlab. La GUI (Graphical User Interface) serve per creare l'interfaccia grafica di un programmino e poi renderlo un eseguibile "stand alone" ossia un programmino che si può usare liberamente, al di fuori dell'ambiente in cui è stato creato.
Ci sono dei passi da fare:

1) Disegno l'interfaccia grafica

digitare il comando

>> guide

così facendo si lancia un programma grafico nel quale si aggiungono bottoni, grafici, menù a tendina ecc... e si crea insomma in "real time" l'interfaccia grafica per l'utente.



Questo programmino si usa in maniera intuitiva scegliendo sul menù di sinistra gli elementi da introdurre e disegnandoli quindi sul pannello.
Quello che sto facendo è un programmino che seleziona una funzione, ne fa il grafico e inoltre disegna l'argomento dell'integrale di Fourier di quella funzione con la frequenza desiderata.

2) Do un nome ad ogni elemento
Una volta disegnata l'interfaccia bisogna dare dei nomi"tag" agli elementi e degli argomenti.
Per fare ciò si usa fa un doppio click sull'elemento. Ad esempio introduco un elemento, faccio doppio click e mi appare la finestra qui sotto


La finestra "inspector" serve a dare un nome alle cose ed anche ad abbellirle, per esempio si possono selezionare il font, il colore, la dimensione del testo ecc... Noi ci concentriamo sulle righe:

"tag" è il nome dell'oggetto che dopo verrà richiamato dallo script principale ad esempio, la casella di testo per inserire la frequenza l'ho chiamata "freq" e avanti così

"String" serve a definire il contenuto in testo scritto dell'oggetto, ad esempio nel menù a tendina ho aggiunto il nome delle funzioni

3) creo lo script
Ora basta salvare il disegno che verrà salvato come un file .fig. Nel fare questa operazione il Matlab costruisce e ci mostra lo script direttamente sull'editor.

ORA COSA DOBBIAMO FARE??
Semplice, scrivere il programmino che vogliamo.
MA DOVE?
nella funzione "Callback" del tasto Go! infatto, per ogni elemento


le funzioni le trovate clikkando sul fasto f(x) dell'editor. Per fare partire il vostro programma dovete copiare lo script che genera il grafico nella funzione callback relativa al tasto che fa partire tutto. Ad esempio nel mio script, dopo avere selezionato la funzione e la frequenza si schiaccia il tasto go! quindi ho scritto la parte di codice che fa i calcoli nella funzione go_pushbutton_callback

Fatto questo lanciate lo script e guardate se funziona.
Se volete giocare con lo script e il file fig, scaricateli, metteteli nella directory c:/documenti/MATLAB o dove volete e buon divertimento, mi raccomando sono entrambi necessari per potere lanciare lo script, inoltre, cosa carina, quando modificate il .fig che ne so per aggiungere un bottone, lo script nell'editor si aggiorna in automatico senza danneggiare o perdere le righe che avete aggiunto voi.
Alla fine di tutto potete compilare lo script e renderlo un programma a se stante staccato da Matlab, la procedura è la seguente:

1) esportare dal programma "guida" il file. Verrà salvato con il nome: nomefile_export.m
2) dalla workspace digitare
>>mbuild -setup

3) rispondere y alla prima domCorsivoanda

4) selezionare uno dei compilatori proposti con il numero il primo da me va bene

4) rispondere y alla seconda domanda. Se tutto va bene e il programma risponde done... scrivere

5) >>mcc -m nomefile_export.m -o nomeeseguibile

aspettare un po' e nella stessa cartella dove avete salvato il file troverete l'eseguibile.
Bon ora sono sicuro che non me lo dimenticherò più comunque in questo sito trovate tutto: