MATLAB in laboratorio


MATLAB è uno strumento particolarmente utile nelle attività di laboratorio, dove può essere sfruttato, nelle sue funzionalità di base, per:

Al fine di esemplificare l’utilizzo di tali funzioni, proponiamo lo svolgimento di due semplici esercitazioni di laboratorio.


Esercitazione 1 - Studio del comportamento di un resistore

L’esercitazione si propone lo studio della caratteristica tensione-corrente di un resistore di valore nominale R = 100 nel campo 0 ÷ 10 V. Si decide di effettuare la misura della corrente I che attraversa la resistenza per tensioni V pari a 1, 2, ..., 10 V. I valori teorici sono calcolati con MATLAB nel seguente modo:

Definizione di R in Ohm R=100;
Definizione del vettore V in Volt V=(0:10);
Definizione del vettore IT (valori teorici) in Ampere IT=V/R;
Generazione dell’output del vettore IT (l’operazione di trasposizione ha la funzione di incolonnare i valori) IT'
Output ans =
         0
    0.0100
    0.0200
    0.0300
    0.0400
    0.0500
    0.0600
    0.0700
    0.0800
    0.0900
    0.1000

Tab. 1

Dai valori teorici (IT) e dai risultati sperimentali (IS) si ottiene la seguente tabella:

V (V)

IT (mA)

IS (mA)

0 0 0
1 10 11,2
2 20 21,9
3 30 32,0
4 40 43,8
5 50 55,2
6 60 66,3
7 70 76,3
8 80 90,2
9 90 98,8
10 100 109

Tab. 2

Si provvede quindi, mediante MATLAB, a generare il grafico della retta teorica e ad inserire nello stesso grafico i punti relativi alle misure (non uniti da curva) e la retta ottenuta dall’interpolazione lineare degli stessi punti. Dal coefficiente angolare k di tale retta è possibile poi calcolare il valore effettivo della resistenza, pari a RS = 1/k. L’interpolazione lineare è effettuata tramite la funzione polyfit, che nella forma polyfit(X,Y,N)calcola i coefficienti del polinomio P(X)di grado Nche approssima i dati con il criterio dei minimi quadrati. Per interpolare i dati con una retta si deve usare la forma A=polyfit(X,Y,1)che restituisce il vettore A il cui primo elemento è il coefficiente angolare della retta, mentre il secondo elemento è l’intercetta per X=0. La retta interpolante è quindi Y2=A(2)+A(1)*X così come, più in generale, il polinomio interpolante è Y2=A(N+1)+A(N)*X+A(N-1)*X.^2+...+A(1)*X^N. Nel codice seguente si suppongono già introdotti i valori di R, Ve IT.

Definizione del vettore IS (valori sperimentali) in Ampere IS=[0 11.2 21.9 32 43.8 55.2 ...
66.3 76.3 90.2 98.8 109]*1e-3;
Calcolo dei coefficienti della retta interpolante i dati A=polyfit(V,IS,1);
Definizione del vettore relativo alla retta interpolante I2=A(2)+A(1)*V;
Esecuzione sullo stesso piano dei grafici V - IT, V - IS (ad asterischi), V - I2 plot(V,IT,V,IS,'*',V,I2)
Visualizzazione della griglia grid
Inserimento dell’etichetta sull’asse orizzontale xlabel('V (V)')
Inserimento dell’etichetta sull’asse verticale ylabel('I (A)')
Inserimento del titolo title('Caratteristica V-I - Retta teorica (blu) e sperimentale interpolata (rosso)')
(tutto di seguito)
Calcolo del valore sperimentale della resistenza RS=1/A(1)
Output RS =
   90.8040

Tab. 3


Esercitazione 2 - Studio di un circuito RC passa-basso

L’esercitazione si propone lo studio della risposta in frequenza, limitatamente al guadagno, di un circuito RC passa-basso costituito da una resistenza R = 1 k e da una capacità C = 10 nF (fig. 1). La frequenza di taglio nominale del filtro è dunque

Fig. 1

Le misure vengono effettuate nel campo 100 Hz ÷ 1 MHz a passi 1 - 2 - 5 (100 - 200 - 500 - 1 k - 2 k - 5 k - etc.). I valori teorici sono calcolati con MATLAB applicando l’espressione

Definizione della frequenza di taglio f0T in kHz f0T=15.9;
Definizione del vettore f in kHz f=[.1 .2 .5 1 2 5 10 20 50 ...
100 200 500 1000];
Definizione del vettore AVT AT=1./sqrt(1+(f/f0T).^2);
Definizione del vettore AVT(dB), in decibel ATdB=20*log10(AT);
Generazione dell’output del vettore AVT (l’operazione di trasposizione ha la funzione di incolonnare i valori) AT'
Output ans =
    1.0000
    0.9999
    0.9995
    0.9980
    0.9922
    0.9539
    0.8465
    0.6223
    0.3030
    0.1570
    0.0792
    0.0318
    0.0159
Generazione dell’output del vettore AVT(dB) ATdB'
Output ans =
   -0.0002
   -0.0007
   -0.0043
   -0.0171
   -0.0682
   -0.4095
   -1.4475
   -4.1199
  -10.3698
  -16.0805
  -22.0200
  -29.9558
  -35.9732

Tab. 4

Dai valori teorici (AVT) e dai risultati sperimentali (AVS) si ottiene la seguente tabella, dove i valori di AVS(dB) sono calcolati con MATLAB (vedi codice seguente).

f AVT AVT(dB) AVS AVS(dB)
100 Hz 1,0000 -0,0002 1 0
200 Hz 0,9999 -0,0007 1 0
500 Hz 0,9995 -0,0043 1 0
1 kHz 0,9980 -0,0171 1 0
2 kHz 0,9922 -0,0682 0,98 -0,1755
5 kHz 0,9539 -0,4095 0,94 -0,5374
10 kHz 0,8465 -1,4475 0,82 -1.7237
20 kHz 0,6223 -4,1199 0,58 -4.7314
50 kHz 0,3030 -10,3698 0,26 -11.7005
100 kHz 0,1570 -16,0805 0,12 -18.4164
200 kHz 0,0792 -22,0200 0,052 -25.6799
500 kHz 0,0318 -29,9558 0,024 -32.3958
1 MHz 0,0159 -35,9732 0,012 -38.4164

Tab. 5

Si provvede quindi, mediante MATLAB, a generare il diagramma di Bode teorico e ad inserire nello stesso grafico i punti relativi alle misure. E’ possibile inoltre generare il diagramma di Bode asintotico mediante l’interpolazione delle misure. Per la prima parte del grafico è sufficiente generare un vettore a 13 elementi nulli. Per la seconda parte si devono calcolare i coefficienti della retta interpolante gli ultimi 5 punti (quelli allineati). A tal fine si definisce un vettore frequenza f2 sulla base del logaritmo degli ultimi 5 elementi del vettore f (si consideri che il grafico è logaritmico sull’asse orizzontale); si calcolano quindi i coefficienti della retta interpolante i punti AVS(dB) (ultimi 5 elementi) - f2 e sulla base di tali coefficienti si definisce il vettore A2 in funzione del logaritmo di f.

Definizione del vettore AVS AS=[1 1 1 1 .98 .94 .82 .58 .26 ...
.12 .052 .024 .012];
Definizione del vettore AVS(dB), in decibel ASdB=20*log10(AS);
Generazione dell’output del vettore AVS(dB) ASdB'
Output ans =
         0
         0
         0
         0
   -0.1755
   -0.5374
   -1.7237
   -4.7314
  -11.7005
  -18.4164
  -25.6799
  -32.3958
  -38.4164
Definizione del vettore f2 come logaritmo di f (ultimi 5 elementi) f2=log10(f(9:13));
Calcolo dei coefficienti della retta interpolante i punti AVS(dB) (ultimi 5 elementi) - f2 P=polyfit(f2,ASdB(9:13),1);
Definizione del vettore A2 A2=P(2)+P(1)*log10(f);
Definizione del vettore A3 a 13 elementi nulli A3=zeros(1,13);
Esecuzione del grafico su scala della frequenza logaritmica dei vettori precedentemente definiti semilogx(f,ATdB,f,ASdB,'*', ...
f,A3,'r',f,A2,'r')
Cambio di scala sull’asse verticale per migliorare la leggibilità del grafico axis([-inf inf -inf 5])
Visualizzazione della griglia grid
Inserimento dell’etichetta sull’asse orizzontale xlabel('f (kHz)')
Inserimento dell’etichetta sull’asse verticale ylabel('AV(dB)')
Inserimento del titolo title('Diagramma di Bode - Curva teorica (blu) e sperimentale interpolata (rosso)')
(tutto di seguito)

Tab. 6