Salta al contenuto
Note per Studenti Esercizio 17 · dall'algoritmo al filtro analogico equivalente con la discretizzazione di Eulero (temi d'esame febbraio 2026 e luglio 2020)

Esercizio 17dall'algoritmo al filtro analogico equivalente con la discretizzazione di Eulero (temi d'esame febbraio 2026 e luglio 2020)

Esame
In questa pagina 3

Testo (tema d'esame febbraio 2026 problema P1; luglio 2020 problema 3).

(i) Si consideri l'algoritmo y(k)=0,8 y(k−1)+12,2 x(k)−12 x(k−1)y(k)=0{,}8\,y(k-1)+12{,}2\,x(k)-12\,x(k-1). Usando il metodo di Eulero si determinino: il tipo di filtro; la pulsazione dei poli e degli zeri (relativa a fcf_c); il tempo di assestamento entro il ±10%\pm10\% del valore finale (relativo al periodo di campionamento); il valore finale della risposta a un segnale x(kTc)x(kT_c) a gradino unitario; il rapporto tra il guadagno in bassa frequenza e quello in alta frequenza.

(ii) Un algoritmo di filtro passa-alto sul segnale x(k)x(k) è y(k)=1λ+1[y(k−1)+x(k)−x(k−1)]y(k)=\dfrac1{\lambda+1}\big[y(k-1)+x(k)-x(k-1)\big] con λ=0,05\lambda=0{,}05. Determinare: la rappresentazione esadecimale in complemento a 2, nella notazione frazionaria 0.16, del coefficiente 1λ+1\frac1{\lambda+1} e l'errore; la frequenza di campionamento richiesta per collocare il polo del filtro a 1 kHz; il numero di cicli di calcolo perché il filtro raggiunga la condizione di regime (entro il 10%) dopo un gradino.


Teoria usata: Discretizzazione di Eulero e TustinPer realizzare numericamente un filtro o regolatore $F(s)$ si approssima $\frac1s$ con un integratore a tempo discreto. Eulero: $\boxed{s=\dfrac{1-z^{-1}}{T_c}}$ (da $\mathrm{Int}(nT)=\mathrm{Int}((n-1)T)+T,x(n)$). Così $\dfrac{1+s\tau_z}{1+s\tau_p}$ diventa $y(k)=\dfrac{\tau_p}{T_c+\tau_p}y(k-1)+\dfrac{T_c+\tau_z}{T_c+\tau_p}x(k)-\dfrac{\tau_z}{T_c+\tau_p}x(k-1)$. Il passaggio inverso (da algoritmo a $F(s)$) usa $z^{-1}\approx1-sT_c$. L'approssimazione è affidabile solo fino a circa $f_c/10$ (distorsione, warping); Tustin $s=\frac2{T_c}\frac{1-z^{-1}}{1+z^{-1}}$ è più fedele.Discretizzazione di Eulero e Tustin →, Filtri numerici IIR e FIRUn filtro numerico è una equazione alle differenzerelazione che dà il campione di uscita in funzione di campioni di ingresso e di uscita passati $y(k)=\sum_ib_ix(k-i)+\sum_ia_iy(k-i)$. IIR (ricorsivo: qualche $a_i\ne0$) ha risposta impulsiva infinita e bastano pochi termini; FIR (tutti $a_i=0$) è sempre stabile ma richiede molti termini. Il passa-basso IIR del primo ordine $y(k)=b,x(k)+a,y(k-1)$ con $a+b=1$ ha guadagno 1 ed è stabile se $|a|<1$; la risposta al gradino è $y(k)=1-a^{k+1}$. Il filtro analogico equivalente (Eulero) ha $\tau=\dfrac{a,T_c}{1-a}$ e $f_T=\dfrac1{2\pi\tau}$. La media mobile di $N$ campioni è un FIR passa-basso che si assesta in $N$ passi.Filtri numerici IIR e FIR →.

(i) Funzione di trasferimento equivalente

Dall'equazione alle differenze, con z−1z^{-1} ritardo di un campione: Y(z)=a1z−1Y(z)+b0X(z)+b1z−1X(z)Y(z)=a_1z^{-1}Y(z)+b_0X(z)+b_1z^{-1}X(z), cioè F(z)=b0+b1z−11−a1z−1,a1=0,8, b0=12,2, b1=−12.F(z)=\frac{b_0+b_1z^{-1}}{1-a_1z^{-1}},\qquad a_1=0{,}8,\ b_0=12{,}2,\ b_1=-12. Con Eulero z−1≈1−sTcz^{-1}\approx1-sT_c (da s=1−z−1Tcs=\frac{1-z^{-1}}{T_c}): F(s)≈(b0+b1)−b1Tcs(1−a1)+a1Tcs=b0+b11−a1⋅1−b1b0+b1Tcs1+a11−a1Tcs=0,20,2⋅1+120,2Tcs1+0,80,2Tcs=1⋅1+s τz1+s τpF(s)\approx\frac{(b_0+b_1)-b_1T_cs}{(1-a_1)+a_1T_cs}=\frac{b_0+b_1}{1-a_1}\cdot\frac{1-\frac{b_1}{b_0+b_1}T_cs}{1+\frac{a_1}{1-a_1}T_cs}=\frac{0{,}2}{0{,}2}\cdot\frac{1+\frac{12}{0{,}2}T_cs}{1+\frac{0{,}8}{0{,}2}T_cs}=1\cdot\frac{1+s\,\tau_z}{1+s\,\tau_p} con τz=60 Tc\tau_z=60\,T_c e τp=4 Tc\tau_p=4\,T_c.

  • Zero e polo: ωz=1τz=fc60\omega_z=\frac1{\tau_z}=\frac{f_c}{60} e ωp=1τp=fc4\omega_p=\frac1{\tau_p}=\frac{f_c}4 (rad/s con fcf_c in Hz). Lo zero è prima del polo: il modulo parte da 1 e cresce fino a τzτp=15\frac{\tau_z}{\tau_p}=15; la fase ha una gobba positiva: è una rete anticipatrice (un passa-alto con guadagno 1 in continua).
  • Guadagno in bassa e alta frequenza: in continua F(0)=b0+b11−a1=1F(0)=\frac{b_0+b_1}{1-a_1}=1; per ω→∞\omega\to\infty (nel modello continuo) τzτp=15\frac{\tau_z}{\tau_p}=15. Il rapporto tra guadagno in bassa e in alta frequenza è 115\frac1{15} (in alta frequenza si amplifica di 15).
  • Valore finale della risposta al gradino unitario: F(0)=1F(0)=\mathbf1.
  • Risposta al gradino. Con x(k)=1x(k)=1 per k≥0k\ge0: y(k)=a1y(k−1)+b0+b1y(k)=a_1y(k-1)+b_0+b_1 (per k≥1k\ge1) con y(0)=b0=12,2y(0)=b_0=12{,}2. Soluzione: y(k)=b0+b11−a1+(b0−b0+b11−a1)a1k=1+11,2⋅0,8ky(k)=\frac{b_0+b_1}{1-a_1}+\Big(b_0-\frac{b_0+b_1}{1-a_1}\Big)a_1^k=1+11{,}2\cdot0{,}8^k. Valori: 12,2; 9,96; 8,17; 6,73; 5,59;…12{,}2;\ 9{,}96;\ 8{,}17;\ 6{,}73;\ 5{,}59;\dots (verifica diretta: y(1)=0,8⋅12,2+12,2−12=9,96y(1)=0{,}8\cdot12{,}2+12{,}2-12=9{,}96 ✓).
  • Tempo di assestamento entro il ±10%\pm10\%: ∣y(k)−1∣≤0,1⇒11,2⋅0,8k≤0,1⇒k≥ln⁡(0,1/11,2)ln⁡0,8=21,1|y(k)-1|\le0{,}1\Rightarrow11{,}2\cdot0{,}8^k\le0{,}1\Rightarrow k\ge\frac{\ln(0{,}1/11{,}2)}{\ln0{,}8}=21{,}1: y(21)=1,103>1,1y(21)=1{,}103>1{,}1, y(22)=1,083≤1,1y(22)=1{,}083\le1{,}1. Quindi 22 Tc\mathbf{22\,T_c}. (Il transitorio parte da 12,212{,}2, molto lontano dal valore finale: serve un tempo lungo per rientrare nel 10%.)

(ii) Passa-alto

Coefficiente. a=11+λ=11,05=0,952381a=\frac1{1+\lambda}=\frac1{1{,}05}=0{,}952381. In 0.16 U: a16=round(0,952381⋅65536)=round(62415,24)=62415=0xF3CFa_{16}=\mathrm{round}(0{,}952381\cdot65536)=\mathrm{round}(62415{,}24)=62415=\mathbf{0xF3CF}; errore −3,6⋅10−6-3{,}6\cdot10^{-6} (rappresentato inferiore al vero). (Se si cercasse la codifica "in complemento a 2" in 1.15 S, a⋅32768=31207,6→31208=0x79E8a\cdot32768=31207{,}6\to31208=\texttt{0x79E8}; il testo chiede 0.16.)

Polo. L'algoritmo ha la forma y(k)=a y(k−1)+a [x(k)−x(k−1)]y(k)=a\,y(k-1)+a\,[x(k)-x(k-1)]: confrontando con il passa-alto di Eulero τpTc+τpy(k−1)+τzTc+τpΔx\frac{\tau_p}{T_c+\tau_p}y(k-1)+\frac{\tau_z}{T_c+\tau_p}\Delta x si ha τp=a1−aTc=Tcλ\tau_p=\frac a{1-a}T_c=\frac{T_c}{\lambda} (perché 1−a=λ1+λ1-a=\frac\lambda{1+\lambda}) e τz=a(Tc+τp)=τp\tau_z=a(T_c+\tau_p)=\tau_p: F(s)=sτ1+sτF(s)=\frac{s\tau}{1+s\tau} con τ=Tcλ=20 Tc\tau=\frac{T_c}\lambda=20\,T_c. Il polo è in fp=12πτ=λfc2πf_p=\frac1{2\pi\tau}=\frac{\lambda f_c}{2\pi}. Per avere fp=1f_p=1 kHz: fc=2πfpλ=2π⋅10000,05=125,7 kHzf_c=\frac{2\pi f_p}{\lambda}=\frac{2\pi\cdot1000}{0{,}05}=\mathbf{125{,}7\ kHz}.

Regime. Con un gradino unitario y(0)=a=0,952y(0)=a=0{,}952 e y(k)=a y(k−1)y(k)=a\,y(k-1) per k≥1k\ge1 (la differenza x(k)−x(k−1)x(k)-x(k-1) è nulla dopo il primo campione): y(k)=ak+1y(k)=a^{k+1}, che tende a 0. Entro il 10% del valore iniziale (per questo filtro il valore finale è 0): ak+1≤0,1⋅aa^{k+1}\le0{,}1\cdot a, cioè ak≤0,1⇒k≥ln⁡0,1ln⁡0,952=47,2a^k\le0{,}1\Rightarrow k\ge\frac{\ln0{,}1}{\ln0{,}952}=47{,}2. Servono quindi 48 cicli di calcolo (con τ=20 Tc\tau=20\,T_c il continuo darebbe 2,3 τ=46 Tc2{,}3\,\tau=46\,T_c).

Errori comuni

  • Scambiare τz\tau_z e τp\tau_p nelle formule: lo zero ha −b1/(b0+b1)-b_1/(b_0+b_1) al numeratore, il polo a1/(1−a1)a_1/(1-a_1) al denominatore.
  • Dimenticare il segno meno di b1b_1 (τz=−b1Tcb0+b1\tau_z=-\frac{b_1T_c}{b_0+b_1} positivo per b1<0b_1<0).
  • Calcolare il tempo di assestamento rispetto al valore finale quando il transitorio parte molto lontano (qui da 12,2): va usato il ∣y−1∣≤0,1|y-1|\le0{,}1, non il solo ak≤0,1a^k\le0{,}1.
  • Usare per un passa-alto b1−a\frac{b}{1-a} come valore finale: lo zero del filtro in continua dà valore finale 0.

Versione ripasso

Testo. Da y=0,8y(k−1)+12,2x(k)−12x(k−1)y=0{,}8y(k-1)+12{,}2x(k)-12x(k-1) al filtro analogico equivalente; passa-alto 1λ+1[y(k−1)+x(k)−x(k−1)]\frac1{\lambda+1}[y(k-1)+x(k)-x(k-1)] con λ=0,05\lambda=0{,}05 (febbraio 2026, luglio 2020).

Teoria collegata