Salta al contenuto
Note per Studenti Esercizio - Train your brain 1 - media mobile, FIR e proprietà dei sistemi

Esercizio - Train your brain 1 - media mobile, FIR e proprietà dei sistemi

In questa pagina 6

Testo ("Train your brain" della lezione 2 del corso Multimedia Signal Processing, UniPD: otto brevi esercizi, riportati sotto). I primi cinque riguardano filtri FIR, schemi a blocchi e cascata; gli ultimi tre il test di invarianza temporale e di linearità. L'ingresso degli esercizi 1 e 2 è x[n]={2,4,6,4,2}x[n]=\{2,4,6,4,2\} per n=0,…,4n=0,\dots,4 e zero altrove (come in Sistemi a tempo discreto e filtri FIRUn sistema a tempo discreto trasforma una sequenza x[n] in una sequenza y[n]. Il filtro FIR causale di ordine M calcola y[n] = Σ b_k x[n-k] (k = 0..M): è una media mobile pesata di L = M+1 campioni, la sua risposta impulsiva h[n] coincide con i coefficienti b_k e l'uscita ha supporto lungo N+M se l'ingresso è lungo N. La media mobile è un passa-basso che ritarda di M/2 campioni; la versione centrata non è causale. Gli schemi a blocchi usano solo moltiplicatori, sommatori e ritardi unitari, senza anelli (feed-forward).Sistemi a tempo discreto e filtri FIR →).

Teoria usata: Sistemi a tempo discreto e filtri FIRUn sistema a tempo discreto trasforma una sequenza x[n] in una sequenza y[n]. Il filtro FIR causale di ordine M calcola y[n] = Σ b_k x[n-k] (k = 0..M): è una media mobile pesata di L = M+1 campioni, la sua risposta impulsiva h[n] coincide con i coefficienti b_k e l'uscita ha supporto lungo N+M se l'ingresso è lungo N. La media mobile è un passa-basso che ritarda di M/2 campioni; la versione centrata non è causale. Gli schemi a blocchi usano solo moltiplicatori, sommatori e ritardi unitari, senza anelli (feed-forward).Sistemi a tempo discreto e filtri FIR → (media mobile, causalità, forma diretta e trasposta), Sistemi LTI e convoluzione discretaUn sistema lineare e tempo-invariante (LTI) è completamente descritto dalla sua risposta impulsiva h[n]: y[n] = Σ x[k] h[n-k] = x[n] * h[n] (somma di convoluzione). Si ricava scomponendo x in impulsi traslati e usando linearità e invarianza. La convoluzione è commutativa, associativa e distributiva; una cascata di LTI equivale a un solo filtro con h = h1 * h2 e l'ordine non conta. Se x ha lunghezza N e h lunghezza L, y ha lunghezza N+L-1. Si calcola col metodo della finestra scorrevole o a tabella. I FIR sono LTI; altri sistemi (n·x[n], x[-n], x²) non lo sono.Sistemi LTI e convoluzione discreta → (cascata, metodo tabellare, test di invarianza e linearità).

1 - media mobile centrata

Testo. y[n]=13(x[n+1]+x[n]+x[n−1])y[n]=\frac13\big(x[n+1]+x[n]+x[n-1]\big): (Q1) è causale? (Q2) supporto dell'uscita? (Q3) confronto tra i grafici di yy e xx.

Svolgimento. y[0]=13(x[1]+x[0]+x[−1])=13(4+2+0)=2y[0]=\frac13(x[1]+x[0]+x[-1])=\frac13(4+2+0)=2; y[−1]=13(x[0]+x[−1]+x[−2])=13(2+0+0)=23y[-1]=\frac13(x[0]+x[-1]+x[-2])=\frac13(2+0+0)=\frac23; y[−2]=0y[-2]=0; y[1]=13(6+4+2)=4y[1]=\frac13(6+4+2)=4; y[2]=13(4+6+4)=143y[2]=\frac13(4+6+4)=\frac{14}3; y[3]=13(2+4+6)=4y[3]=\frac13(2+4+6)=4; y[4]=13(0+2+4)=2y[4]=\frac13(0+2+4)=2; y[5]=13(0+0+2)=23y[5]=\frac13(0+0+2)=\frac23; y[6]=0y[6]=0.

nn ≤−2\le-2 −1-1 00 11 22 33 44 55 ≥6\ge6
x[n]x[n] 00 00 22 44 66 44 22 00 00
y[n]y[n] 00 23\frac23 22 44 143\frac{14}3 44 22 23\frac23 00

(verificato con Python). Q1: non causale, perché usa x[n+1]x[n+1] (il futuro) e infatti y[−1]=23≠0y[-1]=\frac23\ne0 anche se x[−1]=0x[-1]=0. Q2: supporto −1≤n≤5-1\le n\le5. Q3: yy ha lo stesso baricentro di xx (picco in n=2n=2) ma è più "liscia" e più larga di due campioni (un campione per parte): effetto passa-basso della media. Il grafico di yy è quello di Sistemi a tempo discreto e filtri FIRUn sistema a tempo discreto trasforma una sequenza x[n] in una sequenza y[n]. Il filtro FIR causale di ordine M calcola y[n] = Σ b_k x[n-k] (k = 0..M): è una media mobile pesata di L = M+1 campioni, la sua risposta impulsiva h[n] coincide con i coefficienti b_k e l'uscita ha supporto lungo N+M se l'ingresso è lungo N. La media mobile è un passa-basso che ritarda di M/2 campioni; la versione centrata non è causale. Gli schemi a blocchi usano solo moltiplicatori, sommatori e ritardi unitari, senza anelli (feed-forward).Sistemi a tempo discreto e filtri FIR →.

2 - filtro di lunghezza 4

Testo. Calcolare y[n]y[n] per il filtro con {bk}={3,−1,2,1}\{b_k\}=\{3,-1,2,1\} e lo stesso ingresso.

Svolgimento. y[n]=3x[n]−x[n−1]+2x[n−2]+x[n−3]y[n]=3x[n]-x[n-1]+2x[n-2]+x[n-3]. Esempi: y[0]=3⋅2=6y[0]=3\cdot2=6; y[1]=3⋅4−2=10y[1]=3\cdot4-2=10; y[2]=3⋅6−4+2⋅2=18y[2]=3\cdot6-4+2\cdot2=18; y[3]=3⋅4−6+2⋅4+2=16y[3]=3\cdot4-6+2\cdot4+2=16; y[4]=3⋅2−4+2⋅6+4=18y[4]=3\cdot2-4+2\cdot6+4=18; y[5]=0−2+2⋅4+6=12y[5]=0-2+2\cdot4+6=12; y[6]=0−0+2⋅2+4=8y[6]=0-0+2\cdot2+4=8; y[7]=0−0+0+2=2y[7]=0-0+0+2=2; y[8]=0y[8]=0.

nn <0<0 00 11 22 33 44 55 66 77 ≥8\ge8
y[n]y[n] 00 66 1010 1818 1616 1818 1212 88 22 00

L'uscita ha 5+3=85+3=8 campioni (N+MN+M con N=5N=5, M=3M=3), da n=0n=0 a n=7n=7 (verificato con la convoluzione).

3 - equazione dalla forma diretta

Testo. Schema in forma diretta con tre ritardi e pesi b0=3b_0=3, b1=2b_1=2, b2=−1b_2=-1, b3=2b_3=2 sui segnali x[n],x[n−1],x[n−2],x[n−3]x[n],x[n-1],x[n-2],x[n-3]: scrivere l'equazione alle differenze.

Svolgimento. Le uscite dei ritardi sono x[n−1],x[n−2],x[n−3]x[n-1],x[n-2],x[n-3]; ognuna è moltiplicata per il proprio peso e le uscite si sommano: y[n]=3x[n]+2x[n−1]−x[n−2]+2x[n−3]y[n]=3x[n]+2x[n-1]-x[n-2]+2x[n-3].

4 - equazione dalla forma trasposta

Testo. Schema trasposto: x[n]x[n] va in parallelo a quattro moltiplicatori b3,b2,b1,b0b_3,b_2,b_1,b_0 e le somme parziali percorrono una catena di ritardi. Ricavare l'equazione.

Svolgimento. Si dà un nome al segnale all'ingresso di ciascun ritardo: v3[n]=b3x[n]v_3[n]=b_3x[n], v2[n]=b2x[n]+v3[n−1]v_2[n]=b_2x[n]+v_3[n-1], v1[n]=b1x[n]+v2[n−1]v_1[n]=b_1x[n]+v_2[n-1], y[n]=b0x[n]+v1[n−1]y[n]=b_0x[n]+v_1[n-1]. Sostituendo all'indietro: v2[n−1]=b2x[n−1]+b3x[n−2]v_2[n-1]=b_2x[n-1]+b_3x[n-2]; v1[n−1]=b1x[n−1]+v2[n−2]=b1x[n−1]+b2x[n−2]+b3x[n−3]v_1[n-1]=b_1x[n-1]+v_2[n-2]=b_1x[n-1]+b_2x[n-2]+b_3x[n-3]; e quindi y[n]=b0x[n]+b1x[n−1]+b2x[n−2]+b3x[n−3]y[n]=b_0x[n]+b_1x[n-1]+b_2x[n-2]+b_3x[n-3], la stessa equazione della forma diretta. Le due strutture sono equivalenti dal punto di vista ingresso-uscita (ma differiscono per ordine di calcolo e rumore di arrotondamento).

5 - cascata e costo di realizzazione

Testo. Cascata di h1[n]=1h_1[n]=1 per 0≤n≤30\le n\le3 e h2[n]=1h_2[n]=1 per 0≤n≤20\le n\le2 (zero altrove): risposta impulsiva equivalente e confronto tra le due realizzazioni.

Svolgimento. h=h1∗h2h=h_1*h_2 con il metodo tabellare (tre righe di {1,1,1,1}\{1,1,1,1\} spostate di 0,1,20,1,2 colonne, e somma per colonna):

nn 00 11 22 33 44 55
shift 00 11 11 11 11
shift 11 11 11 11 11
shift 22 11 11 11 11
h[n]h[n] 11 22 33 33 22 11

Quindi h={1,2,3,3,2,1}h=\{1,2,3,3,2,1\} (trapezio, 4+3−1=64+3-1=6 campioni; verificato). Due realizzazioni: (1) un solo filtro y[n]=∑k=05bkx[n−k]y[n]=\sum_{k=0}^{5}b_kx[n-k]; (2) due equazioni in cascata w[n]=∑k=03x[n−k]w[n]=\sum_{k=0}^3x[n-k], y[n]=∑k=02w[n−k]y[n]=\sum_{k=0}^2w[n-k].

Costo per campione di uscita. (1): 66 moltiplicazioni e 55 somme. (2): nessuna moltiplicazione e 3+2=53+2=5 somme. Nota sui conti del corso: il corso scrive 66 addizioni e 66 moltiplicazioni per (1) e 77 addizioni per (2) contando i termini di ogni somma (66; 4+34+3) invece delle somme effettive (uno in meno per ciascuna: 55; 3+23+2): in entrambi i conteggi la differenza vera è che la realizzazione (2) elimina le 66 moltiplicazioni. Il motivo pratico: un moltiplicatore vale parecchie addizioni, su FPGA occupa più area e usa più transistor, quindi consuma più potenza.

6, 7, 8 - invarianza temporale e linearità

Per ogni sistema si confrontano i due percorsi: ritardo dopo il sistema, y[n−n0]y[n-n_0], e ritardo prima, T{x[n−n0]}T\{x[n-n_0]\}.

6. y[n]=n x[n]y[n]=n\,x[n]. Dopo: y[n−n0]=(n−n0) x[n−n0]y[n-n_0]=(n-n_0)\,x[n-n_0]. Prima: n x[n−n0]n\,x[n-n_0]. Diversi: non tempo-invariante (il coefficiente nn si trasla solo nel primo percorso).

7. y[n]=x[n]2y[n]=x[n]^2. Dopo: y[n−n0]=x[n−n0]2y[n-n_0]=x[n-n_0]^2. Prima: (x[n−n0])2(x[n-n_0])^2. Uguali: tempo-invariante. (Non è lineare: (2x)2=4x2≠2x2(2x)^2=4x^2\ne2x^2.)

8. y[n]=x[−n]y[n]=x[-n] (ribaltamento). Invarianza: dopo: y[n−n0]=x[−(n−n0)]=x[−n+n0]y[n-n_0]=x[-(n-n_0)]=x[-n+n_0]; prima: w[n]=x[n−n0]w[n]=x[n-n_0] e w[−n]=x[−n−n0]w[-n]=x[-n-n_0]. Diversi (+n0+n_0 contro −n0-n_0): non tempo-invariante. Linearità: scalamento αx[n]→αx[−n]=αy[n]\alpha x[n]\to\alpha x[-n]=\alpha y[n] ✓ e sovrapposizione x1+x2→x1[−n]+x2[−n]=y1[n]+y2[n]x_1+x_2\to x_1[-n]+x_2[-n]=y_1[n]+y_2[n] ✓: lineare. Errore tipico: nel percorso "prima" sostituire n→n−n0n\to n-n_0 anche dentro il ribaltamento e ottenere x[−n+n0]x[-n+n_0]; il ritardo si applica all'ingresso w[n]=x[n−n0]w[n]=x[n-n_0] e solo dopo il sistema lo ribalta.

Versione ripasso

1 - media centrata. y[n]=13(x[n+1]+x[n]+x[n−1])y[n]=\frac13(x[n+1]+x[n]+x[n-1]) con x={2,4,6,4,2}x=\{2,4,6,4,2\} per n=0,…,4n=0,\dots,4: y[−1]=23y[-1]=\frac23, y[0]=2y[0]=2, y[1]=4y[1]=4, y[2]=143y[2]=\frac{14}3, y[3]=4y[3]=4, y[4]=2y[4]=2, y[5]=23y[5]=\frac23. Supporto −1≤n≤5-1\le n\le5. Non causale, perché usa x[n+1]x[n+1].

2 - FIR di lunghezza 4. y[n]=3x[n]−x[n−1]+2x[n−2]+x[n−3]y[n]=3x[n]-x[n-1]+2x[n-2]+x[n-3]: y={6,10,18,16,18,12,8,2}y=\{6,10,18,16,18,12,8,2\} per n=0,…,7n=0,\dots,7. Supporto di lunghezza 5+3=85+3=8.

3 - forma diretta. Con b0=3b_0=3, b1=2b_1=2, b2=−1b_2=-1, b3=2b_3=2: y[n]=3x[n]+2x[n−1]−x[n−2]+2x[n−3]y[n]=3x[n]+2x[n-1]-x[n-2]+2x[n-3].

4 - forma trasposta. Con v3=b3xv_3=b_3x, v2=b2x+v3[n−1]v_2=b_2x+v_3[n-1], v1=b1x+v2[n−1]v_1=b_1x+v_2[n-1], y=b0x+v1[n−1]y=b_0x+v_1[n-1] si ottiene y[n]=b0x[n]+b1x[n−1]+b2x[n−2]+b3x[n−3]y[n]=b_0x[n]+b_1x[n-1]+b_2x[n-2]+b_3x[n-3]: stessa equazione della diretta, ma ordine di calcolo diverso.

5 - cascata. {1,1,1,1}∗{1,1,1}={1,2,3,3,2,1}\{1,1,1,1\}*\{1,1,1\}=\{1,2,3,3,2,1\}. Realizzazione (1): 66 moltiplicazioni e 55 somme per campione. Realizzazione (2), in cascata: nessuna moltiplicazione e 55 somme.

6-8 - invarianza e linearità.

  • y=n x[n]y=n\,x[n]: non tempo-invariante, perché il coefficiente nn non si trasla.
  • y=x[n]2y=x[n]^2: tempo-invariante, non lineare.
  • y=x[−n]y=x[-n]: non tempo-invariante, ma lineare.

Teoria: Sistemi a tempo discreto e filtri FIRUn sistema a tempo discreto trasforma una sequenza x[n] in una sequenza y[n]. Il filtro FIR causale di ordine M calcola y[n] = Σ b_k x[n-k] (k = 0..M): è una media mobile pesata di L = M+1 campioni, la sua risposta impulsiva h[n] coincide con i coefficienti b_k e l'uscita ha supporto lungo N+M se l'ingresso è lungo N. La media mobile è un passa-basso che ritarda di M/2 campioni; la versione centrata non è causale. Gli schemi a blocchi usano solo moltiplicatori, sommatori e ritardi unitari, senza anelli (feed-forward).Sistemi a tempo discreto e filtri FIR → (media mobile, causalità, forma diretta e trasposta), Sistemi LTI e convoluzione discretaUn sistema lineare e tempo-invariante (LTI) è completamente descritto dalla sua risposta impulsiva h[n]: y[n] = Σ x[k] h[n-k] = x[n] * h[n] (somma di convoluzione). Si ricava scomponendo x in impulsi traslati e usando linearità e invarianza. La convoluzione è commutativa, associativa e distributiva; una cascata di LTI equivale a un solo filtro con h = h1 * h2 e l'ordine non conta. Se x ha lunghezza N e h lunghezza L, y ha lunghezza N+L-1. Si calcola col metodo della finestra scorrevole o a tabella. I FIR sono LTI; altri sistemi (n·x[n], x[-n], x²) non lo sono.Sistemi LTI e convoluzione discreta → (cascata, metodo tabellare, test di invarianza e linearità).

Errori tipici:

  • Confondere il percorso "prima" e "dopo" del ritardo nel test di invarianza.
  • Nel ribaltamento applicare il ritardo anche dentro x[−n]x[-n] ottenendo x[−n+n0]x[-n+n_0].
  • Dire che la forma trasposta cambia l'equazione: cambia solo l'ordine di calcolo.
  • Contare le moltiplicazioni della cascata come se fossero 66 anche in due stadi.

Teoria collegata