Académique Documents
Professionnel Documents
Culture Documents
Lalgoritmo di Goetzel usato nei telefoni moderni (multifrequenza) con e tastiera a 16 tasti. Perch non usare 16 sinussoidi? Perch cos i confronto e e valori di due frequenze ed pi dicile incorrere in errori. Denisco una e u matrice 4x4: 1209 1336 1477 1633 1 2 3 A 4 5 6 B 7 8 9 C 0 canc D
Dove sulla prima riga ho le frequenze colonna (fc ) e sulla prima colonna le frequenze riga (fr ). Alla pressione del tasto viene eseguita una somma delle due sinussoidi generate. In centrale per elaborare che tasti sono stati eettivamente premuti c un e sistema digitale, quindi come prima cosa bisogna implementare un ADC. A questo punto importante denire la relazione tra frequenza anologie ca e digitale. Per capirlo analizziamo la discretizzazione della funzione sinussoidale: x(t) = Acos(2F0 t) = Acos(0 t) x[n] = Acos(0 Ts n) = Acos(0 n) Da qui facile dedurre che: e 0 = 0 Ts (Naturalmente nel caso di un segnale campionato, alcuni segnali invece nascono digitali). A questo punto nasce immeditamente un problema: devo individuare le i nel segnale x(t), in particolare una coppia di frequenze. Viene naturale pensare di calcolare tutta la DFT, ma questoperazione molto ineciente. e Con Fs = 8192Hz N = 8192campioni (infatti il tempo di pressione di e un secondo). Quindi devo calcolare 8192 campioni di DFT quando me ne servono solamente 8. Qui interviene lalgoritmo di Goetzel con cui calcolo solo 8 i : kN Nel nostro caso abbiamo che WN = 1 quindi una costante che non e cambia il risultato. Quindi posso scrivere
N 1
X[k] =
l=0
N 1
N 1 kl x[l]WN
kN WN l=0
=
l=0
x[l]WN
k(N l)
Ora consideriamo la sequenza data da x[n] estesa ossia una sequenza xe [n] = 0 per n < 0, n N e xe [n] = x[n] per 0 n N 1 e consideriamo kn un sistema con risposta allimpulso h[n] = WN [n]. Allora luscita del sistema con ingresso xe [n] sar la convoluzione: a
n
yk [n] =
l=0
xe [l]WN
k(nl)
X[k] = yk [N ] Quindi uguale alla DFT quando valutato in N . E vero che la sommatoria del secondo arriva no a N ma xe [N ] = 0. Andiamo adesso nel dominio ZT: He (z) = Z[hk [n]] = Y (z) = 1 k 1 Wn z 1
Che lequazione da implementare sul DSP. Questo lalgorimto di Goetzel e e di primordine. Faccio otto di queste macchine ognuna con il k giusto e
sembra tutto ok. k Per WN complesso e nel caso di un x[n] complessa potrei dover molo e tiplicare due numeri complessi, il che ha un costo elevato. Sarebbe bello moltiplicare per un numero reale per aumentare lecienza.Consideriamo la seguente e lecita moltiplicazione: Hk (z) =
k 1 1 WN z 1 k k 1 WN z 1 1 WN z 1
Moltiplico e divido per il complesso coniugato del denominatore. A questo punto se svolgo i calcoli e antitrasformo ottengo: y[n] = 2cos( 2k k )y[n 1] y[n 2] + xe [n] WN xe [n 1] N
Con un occhio attento si vede che questa formula nasconde una bomba totale. Proviamo a riscrivere H(z) come H1 (z)H2 (z), dove: H1 (z) = 1 1+ cos( 2k )z 1 N + z 2
k H2 (z) = 1 WN z 1
Allora si pu vedere il sistema totale come la cascata dei due sistemi. Questo o lalgoritmo di Goetzel di secondordine che introduce un MUST: e Denominatore parte Backward, retroazione, IIR Numeratore parte Forward, non va mai indietro, FIR