Salta al contenuto
È uscito il Corso Java Completo
Torna al blog

Cos'è MATLAB e perché lo usano ancora ingegneri e università

Cos'è MATLAB: linguaggio e ambiente a pagamento nato per le matrici, i toolbox e Simulink che lo tengono in vita, le alternative gratuite e quando impararlo.

Edoardo Midali

Edoardo Midali

Developer · Content Creator

8 min di lettura

Sei al secondo anno di ingegneria, il corso di controlli automatici o di segnali dà per scontato MATLAB, e l'ateneo ti regala la licenza. Poi senti dire che "in azienda si usa Python" e ti chiedi se stai perdendo tempo. La risposta dipende dal settore in cui finirai. In questo articolo trovi cos'è MATLAB, perché resiste nonostante le alternative gratuite e come organizzare lo studio senza chiuderti in un solo strumento.

Cos'è MATLAB

MATLAB è insieme un linguaggio di programmazione e un ambiente di sviluppo commerciale, prodotto da MathWorks, pensato per il calcolo numerico con le matrici: per usarlo serve una licenza a pagamento, e questa è la differenza chiave rispetto a quasi tutti gli altri linguaggi di cui si parla in questo blog.

Quando dici "Python" intendi un linguaggio gratuito, con un interprete che chiunque può scaricare e librerie scritte da migliaia di persone. Quando dici "MATLAB" intendi un prodotto: editor, interprete, strumenti grafici, documentazione, pacchetti aggiuntivi, tutto venduto dalla stessa azienda. Non esiste un MATLAB ufficiale gratuito e alternativo; esistono programmi compatibili, di cui parliamo più avanti.

Nato per le matrici

Il nome sta per MATrix LABoratory. MATLAB nasce come strumento didattico creato da Cleve Moler, un professore di matematica che voleva far usare ai suoi studenti le librerie di algebra lineare LINPACK ed EISPACK senza costringerli a scrivere programmi in Fortran. In origine era, in pratica, un'interfaccia interattiva sopra quelle librerie. Solo in seguito è diventato un prodotto commerciale.

Questa origine spiega tutto il resto: in MATLAB tutto è una matrice. Un numero è una matrice uno per uno, un vettore è una matrice con una riga o una colonna, un'immagine è una matrice di pixel.

A = [4 -2; 1 1];   % matrice 2x2
b = [2; 3];        % vettore colonna
x = A \ b          % risolve il sistema lineare A*x = b

Il backslash risolve un sistema lineare scegliendo da solo l'algoritmo più adatto alla matrice. È un'operazione che in altri linguaggi richiede di importare una libreria e sapere quale funzione chiamare; qui è un operatore.

Le operazioni vettoriali sono il modo naturale di lavorare

In MATLAB non scrivi cicli per trasformare i dati: applichi operazioni a vettori e matrici interi.

t = 0:0.001:1;                      % 1001 istanti tra 0 e 1
y = sin(2*pi*5*t) .* exp(-3*t);     % sinusoide smorzata
plot(t, y)
xlabel('tempo [s]')
ylabel('ampiezza')

Tre righe per generare un segnale e disegnarlo. Nota il .*: con il punto la moltiplicazione avviene elemento per elemento, senza il punto è il prodotto tra matrici. È la stessa idea di lavoro vettoriale che trovi in R e in NumPy, e che Julia ha ripreso quasi letteralmente.

Gli indici partono da 1 e si scrivono tra parentesi tonde: A(2,1) è l'elemento nella seconda riga, prima colonna. Per chi arriva dal C o da Python è un'abitudine da cambiare.

Il vero motivo per cui resiste: toolbox e Simulink

Se MATLAB fosse solo un linguaggio per le matrici, Python lo avrebbe già sostituito ovunque. Il motivo per cui resiste è un altro.

I toolbox

MathWorks vende toolbox: pacchetti specialistici per settori precisi. Elaborazione dei segnali, sistemi di controllo, elaborazione di immagini, ottimizzazione, comunicazioni, finanza computazionale e molti altri.

Il valore non sta solo nelle funzioni, che spesso esistono anche in Python, ma nel fatto che sono sviluppate, documentate, testate e supportate da un'unica azienda, con un'interfaccia coerente tra loro. In settori dove un errore di calcolo ha conseguenze serie, poter dire "abbiamo usato uno strumento commerciale validato, con supporto e documentazione" pesa più della gratuità.

Simulink

Il pezzo che non ha davvero rivali è Simulink: un ambiente grafico, integrato con MATLAB, in cui modelli un sistema dinamico collegando blocchi invece di scrivere codice. Un motore, un sistema di frenata, un controllore di volo, un circuito: disegni lo schema, simuli il comportamento nel tempo, regoli i parametri.

Il passo decisivo è la generazione automatica di codice: dal modello Simulink si può produrre codice C da caricare su un microcontrollore. Nei settori automotive e aerospaziale questo flusso, chiamato progettazione basata su modelli, è una pratica consolidata, con strumenti di verifica e certificazione costruiti attorno.

Qui le alternative gratuite non hanno un equivalente maturo. Esistono progetti che coprono pezzi del problema, ma non l'intera catena dal modello al codice certificabile. Ecco perché in certe aziende MATLAB non è una scelta ma un requisito.

Il modello di licenza: perché lo impari all'università

MATLAB si paga, e per le aziende il costo non è trascurabile: si compra la licenza base e poi, separatamente, ogni toolbox che serve. I prezzi cambiano per tipo di licenza e di utilizzo, quindi verifica alla fonte sul sito di MathWorks.

Per gli studenti la situazione è opposta. Molte università hanno una licenza di ateneo che permette a studenti e docenti di installarlo gratuitamente, spesso con un'ampia scelta di toolbox. Da qui il percorso tipico:

  • all'università lo usi ovunque, perché è gratis, i docenti lo conoscono e gli esercizi sono scritti per quello;
  • in azienda lo ritrovi solo in certi settori: automotive, aerospazio, energia, automazione industriale, strumentazione, alcuni ambiti della finanza quantitativa;
  • altrove incontri Python, perché nessuno vuole pagare licenze per fare ciò che un linguaggio gratuito fa altrettanto bene.

Non è un caso che molte aziende siano disposte a investire in licenze proprio dove ci sono Simulink e toolbox certificati, e non altrove.

Le alternative

AlternativaCosa offreLimite
Python con NumPy, SciPy, MatplotlibGratuito, enorme ecosistema, usato ovunqueNessun equivalente maturo di Simulink
GNU OctaveGratuito, sintassi in gran parte compatibilePiù lento, meno toolbox, interfaccia più spartana
JuliaVeloce, sintassi simile, gratuitoEcosistema piccolo, pochissimo usato in azienda

Python è l'alternativa principale. Il codice MATLAB di tutti i giorni si traduce quasi riga per riga:

% MATLAB
t = linspace(0, 1, 1001);
y = sin(2*pi*5*t) .* exp(-3*t);
m = max(y);
# Python con NumPy
import numpy as np

t = np.linspace(0, 1, 1001)
y = np.sin(2 * np.pi * 5 * t) * np.exp(-3 * t)
m = y.max()

Le differenze sono poche ma vanno conosciute: in NumPy l'operatore * lavora già elemento per elemento (il prodotto matriciale si scrive @), gli indici partono da 0 e le funzioni vanno importate esplicitamente. Chi sa ragionare in modo vettoriale in MATLAB impara NumPy in pochi giorni, perché il modo di pensare è lo stesso. Per l'analisi dati e il machine learning Python ha un ecosistema che MATLAB non può eguagliare.

GNU Octave è la scelta giusta se hai script MATLAB esistenti e vuoi eseguirli senza licenza: gran parte del codice di base funziona senza modifiche, ma i toolbox avanzati e Simulink non ci sono.

Errori comuni

Confondere * e .*. Il primo è il prodotto matriciale, il secondo elemento per elemento. Se i vettori hanno la dimensione sbagliata ottieni un errore; se sono quadrati ottieni un risultato sbagliato senza avvisi, che è peggio.

Scrivere cicli dove basta un'operazione vettoriale. Un for che somma elementi uno per uno funziona, ma è più lento e meno leggibile di sum(v). Il MATLAB idiomatico è vettoriale.

Far crescere un array dentro un ciclo. Aggiungere un elemento alla volta costringe MATLAB a riallocare memoria ogni volta. Prealloca con zeros(1, n) e poi riempi.

Usare i e j come contatori. In MATLAB sono anche l'unità immaginaria: sovrascriverle porta a errori subdoli nei calcoli con numeri complessi.

Dare per scontato che il tuo codice girerà in azienda. Se usi un toolbox che il datore di lavoro non ha comprato, lo script non parte. Controlla sempre quali toolbox stai usando davvero.

Imparare solo MATLAB. È l'errore strategico più comune: esci dall'università fortissimo in uno strumento che molte aziende non hanno.

In sintesi

MATLAB è un linguaggio e un ambiente commerciale insieme, nato come interfaccia alle librerie Fortran di algebra lineare e costruito attorno alle matrici: tutto è una matrice, e le operazioni vettoriali sono il modo naturale di lavorare.

Resiste grazie ai toolbox specialistici e soprattutto a Simulink, che permette di modellare sistemi dinamici e generare codice per sistemi embedded. In automotive e aerospazio le alternative gratuite non hanno un equivalente maturo.

Il modello di licenza spiega la sua diffusione: gratuito per molti studenti tramite licenze di ateneo, costoso per le aziende, quindi onnipresente all'università e presente in azienda solo dove serve davvero.

Il consiglio onesto: se studi ingegneria, impara MATLAB per gli esami e per i settori che lo usano, ma investi anche in Python, che ti segue in qualunque azienda e in qualunque ruolo.

Se vuoi capire dove si colloca rispetto agli altri strumenti, il quadro completo è in tutti i linguaggi di programmazione, e se stai scegliendo cosa studiare dopo trovi indicazioni in quale linguaggio imparare.