Feeds:
Posts
Comments

Posts Tagged ‘Matlab’

Ho passato i primi cinque anni di università a stare il più alla larga possibile da Matlab, per niente entusiasta di imparare un linguaggio di programmazione di matematica discreta, io che venivo da cinque anni passati al Liceo usando Derive (il miglior programma di matematica continua (e non solo, peraltro) mai esistito, se volete il mio parere); e devo ammettere che questo piano è stato un successo: passati con nonchalance gli pseudo-laboratori dei corsi di matematica della triennale, poi non se ne è più sentito parlare. Fino all’anno scorso.

Il corso di “Analisi e sintesi di immagini” prevedeva, infatti, un progetto relativo ai contenuti, e per allora io avevo sviluppato una certa voglia di immergermi in questo linguaggio/piattaforma/IDE, non so se per tutte le pubblicità “Do you speak Matlab” in quarta di copertina tutti i mesi su Spectrum; il progetto che ho scelto (e di cui parlerò quando lo avrò consegnato, non prima) peraltro mi permetteva di scegliere l’ambiente ed il linguaggio che volevo, ma dato che avevo già intravisto le potenzialità delle funzioni di analisi delle immagini di Matlab stesso, mi sono rivolto direttamente ad esso, ed ora, dopo circa sei mesi di lavoro (non continuo, naturalmente!), posso dare un primo giudizio sull’andazzo generale.

L’ambiente

L’IDE di sviluppo è sicuramente interessante, e la quantità di librerie usabili piuttosto alta e di qualità, e lo posso dire pur avendo solo la Student Edition + NN tools; le uniche due pecche riscontrate sono l’editor, che non riapre i file che aveva aperti l’ultima volta (ma può essere che io non abbia visto un’opzione che faccia al caso mio), ed il fatto che per alcune operazioni, o a fronte di qualche problema, non sia possibile bloccare l’esecuzione corrente del codice, rendendo necessario in un paio di occasioni un sonoro kill del processo.

Il linguaggio

Sul linguaggio si pecca un po’: alcune funzioni non sono di così immediata comprensione, e mi rendo conto che in alcuni casi sia più che altro dovuto al fatto che non si è abituati a lavorare sempre e comunque con matrici; in altri casi, alcuni comportamenti sono veramente assurdi (length restituisce 2 sia a fronte di [a b] che [a; b], e non è così immediato pensare che size ha un secondo parametro per indicare la dimensione: un bel metodo rows, per esempio, avrebbe fatto comodo), oltre al fatto che qualche metodo di list comprehension sarebbe stato utile. Il vero problema in questo caso (e parlo per esperienza, avendo cercato di replicare la libreria lists di Erlang in Matlab) è che le funzioni lambda sono limitate ad un solo statement, cosa veramente incredibile.

Si sente anche (parecchio!) la mancanza di un contenitore tipo ArrayList, ovvero in cui si possa fare inserimento/sostituzione di elementi ad accesso casuale: certo, diranno gli utenti di Matlab, ci sono le celle per questo, ma decisamente siamo anni luce indietro, dato che hanno due metodi utili e manca il resto della libreria adatta.

La sintassi delle classi non è male, è un po’ un incrocio tra Python (bisogna inserire self ad ogni metodo, e non sono richieste parentesi!) e C++ (suddivisione tra parametri, metodi pubblici, metodi privati…); certo, bisogna abituarsi a creare gli oggetti senza new, ma di nuovo Python si comporta tale e quale. In compenso, la necessità nella definizione di funzioni di avere una variabile di ritorno da assegnare è veramente stupida: ma return non ha insegnato nulla?

Giudizio finale

Direi che il tutto si merita un bell’8, anche se ogni tanto alcune idiosincrasie (ad esempio i complaints perchè si è modificato il codice di una classe ed, a detta sua, esistono ancora oggetti vecchi non eliminati (da eliminare con clear, secondo lui, anche se ciò si rivela inutile)) rendono la vita decisamente difficile.

Read Full Post »

Trasparenze

Trasparenze in Matlab

Trasparenze in Matlab

Ecco l’utilità delle finestre trasparenti in fase di trascinamento: permettono di vedere le sovrapposizioni tra grafici in Matlab…

P.S.: se non è chiaro, ci sono due finestre sovrapposte: quella in primo piano produce la parte nera della figura, mentre quella in secondo piano mostra un’ombra grigia.

Read Full Post »