MATLAB è il linguaggio che incontri prima a ingegneria, e Simulink è quasi sempre il modo in cui ti vengono chiesti i progetti di controlli, segnali, dinamica e modellistica. Eppure, in molti corsi del Politecnico, la prima ora di lezione è “ecco MATLAB, andate al lab” — e gli studenti si trovano a inseguire una sintassi che non è quella di Python e una logica vettoriale che non è quella del C.
Quello che segue è il percorso che faccio fare ai miei studenti — dalla matricola fino agli esami più “pesanti” tipo Controlli Automatici o Sistemi Lineari — per arrivare all’esame con MATLAB e Simulink solidi, non improvvisati.
Il livello “matricola”: MATLAB come calcolatrice scientifica
Se sei al primo anno e MATLAB è apparso in un corso di calcolo numerico o di algoritmi, ti basta un sottoinsieme molto ridotto del linguaggio:
- Variabili, vettori, matrici (e capire bene la differenza fra
A * BeA .* B). - Operatori
:per creare range (x = 0:0.1:2*pi). - Plot di base (
plot,subplot,figure,xlabel, legend), ehold on/hold off. - Strutture di controllo (
if,for,while) — sintassi diversa da C/Python, occhio agliend. - Funzioni in file
.mseparati e differenza fra script e function.
Non serve OOP, non serve struct, non servono i toolbox. La cosa importante a questo livello è capire che MATLAB pensa per matrici: ogni volta che scrivi un for su un vettore, probabilmente c’è un’operazione vettoriale equivalente che è 10x più veloce e più leggibile.
Tipica trappola da matricola: fare un ciclo for i=1:n per calcolare y(i) = sin(x(i)) invece di scrivere y = sin(x) direttamente. MATLAB applica le funzioni elementwise sui vettori senza che tu debba dirglielo.
Il livello “intermedio”: script ben fatti, debugging, plot leggibili
Dal secondo anno in poi gli esercizi MATLAB iniziano a essere più strutturati: scrivi una funzione che prende parametri, restituisce risultati, magari produce un grafico decente. A questo punto serve:
- Function vs script: la function ha il proprio workspace, lo script no. Capire la differenza evita mille bug “perché la variabile è cambiata”.
- Default arguments e nargin:
narginti dice quanti argomenti sono stati passati e ti permette di scrivere funzioni che accettano parametri opzionali. - Debugging interattivo:
keyboardper fermarti dentro una funzione, breakpoint nell’editor,dbstop if errorper rompere automaticamente al primo errore. - Plot leggibili:
LineWidth,MarkerSize,set(gca, 'FontSize', ...),axis equalquando serve. Un grafico illeggibile in un report ti costa punti, e basta poco per renderlo professionale. - Vectorization sistematica:
bsxfun,arrayfun,meshgrid,repmat. Sapere che esistono ti fa risparmiare ore di for loops.
Il livello “controlli & segnali”: Simulink + toolbox
Quando arrivi ai corsi di Controlli Automatici, Sistemi Lineari, Dinamica, Identificazione, Filtri Digitali, MATLAB diventa il mezzo per usare i toolbox. La sintassi MATLAB pura conta meno: contano i toolbox.
I toolbox che vedo usare di più dai miei studenti:
- Control System Toolbox:
tf,ss,step,impulse,bode,nyquist,pid,pidtune,lqr,place. Tutto quello che serve per progetto di controllore lineare. - System Identification Toolbox:
iddata,arx,armax,n4sid, identificazione da dati. - Signal Processing Toolbox:
fft,filter,butter,cheby1,freqz,spectrogram. - Symbolic Math Toolbox: per quando il prof vuole derivate e integrali simbolici dentro MATLAB (
syms,diff,int,simplify).
A questo livello, Simulink entra in gioco quasi ovunque:
- Modellazione: trascini blocchi (Sum, Gain, Integrator, Transfer Fcn, Saturation, Scope) su un foglio e li colleghi.
- Simulazione: lanci la simulazione, gli scope mostrano l’andamento dei segnali.
- Tuning: PID Tuner integrato per chiudere il loop di controllo, o LQR via codice MATLAB chiamato da una callback.
- Code generation (raro a livello di esame, comune in tesi): generi C dal modello Simulink per microcontrollori.
Errori che vedo più spesso
-
Confondere matrici e elementwise.
A * Bè prodotto matriciale,A .* Bè prodotto elementwise. Sembra ovvio, ma è la causa #1 di errori dimensionali nei progetti. -
Indici da 1. MATLAB indicizza da 1, non da 0 come Python o C. Quando passi codice da uno all’altro, fai attenzione:
x(1)è il primo elemento, non lo zero-th. -
Variabili globali come hack. Se ti trovi a scrivere
globalin più di una funzione, c’è quasi sempre un design migliore (function handle, struct con i parametri, classe). -
Plot senza unità di misura e legenda. Banale ma costa punti in tutti i corsi di laboratorio. Sempre
xlabel,ylabelcon unità tra parentesi, sempre legend se ci sono più curve. -
In Simulink, scope come unica forma di output. Lo scope è ottimo per debug interattivo ma per il report serve esportare i dati in workspace (block “To Workspace”) e fare il plot in MATLAB con stile decente.
-
Tunare PID a occhio in Simulink. Funziona per sistemi semplici, ma per esami di Controlli Automatici è meglio progettare via Bode/luogo delle radici e poi verificare in Simulink. Il prof se ne accorge.
Tempistiche realistiche
- Da zero a esame del primo anno (calcolo numerico tipo): 4-6 lezioni per consolidare la sintassi e fare gli esercizi del laboratorio.
- Esame intermedio (Controlli Automatici, Sistemi e Segnali): 8-12 lezioni distribuite tra MATLAB puro e Simulink. Si parte dai concetti di controllo (continuo o discreto?), si simula in Simulink, si verifica analiticamente in MATLAB.
- Progetto di tesi che usa MATLAB: variabile. In genere uno studente ben preparato usa il tutor per “sbloccare” momenti specifici (un toolbox nuovo, un debug pesante) più che per imparare da zero.
Come lavoriamo nelle lezioni
Le lezioni di MATLAB vanno fatte in live coding condiviso. Apriamo MATLAB su un lato della finestra, l’editor sull’altro, e scriviamo codice insieme: io spiego una struttura, tu la modifichi, io ti faccio sbagliare apposta in modo controllato per vedere cosa ti dice il debugger.
Per Simulink, la stessa cosa: trascini blocchi, simuli, leggiamo lo scope, sistemiamo. Il modello finale lo scrivi tu, ma costruito insieme.
Spesso lavoriamo direttamente sui tuoi materiali del corso (slide del prof, esercitazioni, prova d’esame degli anni passati): è il modo più veloce per essere preparato proprio per quell’esame, non per “MATLAB in generale”.
Vedi anche la pagina dedicata alle ripetizioni di informatica con tutto il programma che seguo (MATLAB, Simulink, Python, C, web development con React).