MATLAB è uno strumento particolarmente utile nelle attività di laboratorio, dove può essere sfruttato, nelle sue funzionalità di base, per:
calcolare tabelle;
riportare su grafico sia le previsioni che i risultati sperimentali;
effettuare l’eventuale interpolazione delle misure.
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:
| 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)') |
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)') |
Tab. 6