Sei sulla pagina 1di 32

7.

Trasformata discreta di Fourier


7.0 Introduzione
Nel capitolo 6 sono state prese in esame la definizione e le
proprietà della trasformata discreta nel tempo di Fourier :
X(ejω), essendo ω una variabile continua nel dominio della
frequenza:


X (e ) = ∑ x(n)e− jω n
n =−∞

La trasformata di Fourier è molto utile per analizzare una


grande varietà di segnali e sistemi di interesse teorico.
*****************************************************************************************************************************************************

La pulsazione discreta nel tempo ω [rad] e la pulsazione continua nel tempo Ω


[rad/sec] sono legate da: ω=ΩT o Ω= ω/T
M. Usai Circuiti digitali 7_0 1


X (e ) = ∑ x(n)e− jω n
n =−∞

Però la maggior parte delle elaborazioni pratiche dei segnali


digitali è fatta con i computer dove:

• non si può operare con ω continua nella frequenza

•e

• non si può dare in ingresso o memorizzare una sequenza


di durata infinita x(n).
*****************************************************************************************************************************************************
La pulsazione discreta nel tempo ω [rad] e la pulsazione continua nel tempo Ω [rad/sec] sono legate da:
ω=ΩT o Ω= ω/T

M. Usai Circuiti digitali 7_0 2


Quindi in generale per le sequenze di dati reali non si può calcolare
la trasformata di Fourier, definita per segnali x teorici, per cui
occorre definire una nuova trasformata nota come:
la Trasformata Discreta di Fourier DFT,
definita per un segnale con un numero N limitato di campioni;
x(n), nelle frequenze ωk con k=1,2,…,N uniformemente
distanziate intorno al cerchio unitario.

Questa trasformata largamente usata, è invertibile e presenta


ulteriori utili proprietà.
In particolare la moltiplicazione di due DTF corrisponde alla
convoluzione delle relative sequenze nel dominio del discreto, ma
questa è una convoluzione circolare e deve essere valutata in
maniera appropriata.

M. Usai Circuiti digitali 7_0 3


I metodi più pratici dell’analisi spettrale sono basati sulla DFT,
sia diretta che inversa.

Esistono algoritmi veloci per il loro calcolo, in particolare:

• l’algoritmo della trasformata veloce di Fourier Fast Fourier


Transform FFT e

• gli algoritmi della convoluzione veloce basati sulla FFT che


possono essere usati per implementare i filtri FIR.

M. Usai Circuiti digitali 7_0 4


7.1 Derivate proprietà della DFT

Data la sequenza x(n) per tutti i valori di n, la sua trasformata discreta nel
tempo di Fourier (DTFT) è data dalla espressione

X '(ω ) = X (e ) =jω
∑ x(n)e − jnω . (7.1.1)
n =−∞

(si noti che la sommatoria è estesa ad un numero infinito di termini).


Se dunque si prendono solo N campioni x(n) per n = 0,1, 2, 3,….,N-1,
e si calcolano solo N campioni di X’(ω) per ω=kω0 e per K=0, 1,2,…, N-1,
con:

ω0 = , (7.1.2)
N
Si definisce la trasformata discreta DFT nella forma
2π nk
N −1 N −1 − jnk N −1 ⎛ − j 2π ⎞
X ' N (kω0 ) = ∑ x(n)e− jnkω = ∑ 0
x ( n)e N

= x ( n) ⎜ e N

⎟ ,

(7.1.3)
n =0 n=0 n =0 ⎝ ⎠
(si noti che la sommatoria è estesa ad un numero finito di termini N).

M. Usai Circuiti digitali 7_0 5


o nella notazione più conveniente:
nk
N -1 ⎛ - j 2π ⎞ N -1
X ' N (kω0 ) = ∑ x ( n) ⎜ e N



= X% ( k ) = ∑ x(n)W kn , k = 0, 1, ..., N -1 , (7.1.4)
n =0 ⎝ ⎠ n =0

-j
dove : W = e N

Questa è la definizione della Trasformata discreta di Fourier DFT.

Risulta ragionevole pensare che ciascuna trasformata DFT sia invertibile, poiché
%
N campioni di x(n) generano N campioni di X ( k ) .

Così la Trasfomata inversa della DFT é data da:


1 N-1 %
x(n)=
% ∑
N k=0
X(k)W -kn , n=0,1,...,N-1 (7.1.6)

dove x% ( n) = x(n) nell’intervallo n=0,1,…N-1.


Questa relazione è facilmente dimostrabile sostituendo la (7.1.4) nella (7.1.6).

M. Usai Circuiti digitali 7_0 6


Infatti essendo:
nk
N-1 ⎛ -j 2π ⎞ N-1

X'N (kω0 )= x(n) ⎜ e N ⎟
⎜ ⎟
%
= X(k) = ∑ x(n)W kn , k=0, 1, ...,N-1 , (7.1.4)
n=0 ⎝ ⎠ n=0

-j
dove : W= e N

sostituendo l’espressione di X% (k ) nella relazione della antitrasformata:

1 N-1 % 1 N-1 ⎛ N-1 kn ⎞


x(n)=
% ∑
N k=0
X(k)W -kn
= ∑ ⎜ ∑
N k=0 ⎝ n=0
x(n)W ⎟ W -kn
, n=0,1,...,N-1 (7.1.6)

si verifica che x% (n) = x(n)

La durata finita della sequenza di campioni fa sorgere dei problemi:


nel mettere in relazione x% (n) con x(n) per tutti gli n e anche
nel mettere in relazione X% (k ) con X’(ω),
ma la DFT è invertibile.
M. Usai Circuiti digitali 7_0 7
Proprietà della DFT

Le proprietà delle DFT sono analoghe a quelle della trasformata z e della


DTFT con alcune interessanti e importanti differenze.
In particolare gli sfasamenti e le convoluzioni relative alla DFT sono circolari.
Per le proprietà delle DTFT, si utilizzerà il simbolo ↔ per indicare una
corrispondenza duale di DFT.

Linearità
Bx%1 (n) + Cx%2 (n) ↔ BX% 1 (k ) + CX% 2 ( k ) (7.1.7)
con B e C costanti arbitrarie, assumendo che entrambe le sequenze x%1 ( n) e x%2 ( n)
abbiano la stessa lunghezza N (se non sono della stessa lunghezza, una o
entrambe le sequenze possono essere zero-padded prima di sommarle come si
vedrà nel paragrafo successivo)

M. Usai Circuiti digitali 7_0 8


Premessa
Per poter correlare i campioni in numero limitato sarà usato un operatore matematico
detto modulo N , che consente di utilizzare per la convoluzione circolare gli indici
dei soli campioni disponibili, come si vedrà in dettaglio per la convoluzione
circolare:
(r)mod N = r ± i N per i intero = 0÷N-1, tale che sia 0≤(r)modN<N.

Esempio se N=5 per r = -i per i= 0÷N-1 si ha:

i= 0 → (r)mod N =-0±i5 → 0 ±i⋅5 = 0,5,-5,… → 0≤ 0 <N → 0


i=1 → (r)mod N = -1±i5 → -1 ±i⋅5 =-1, 4,-6,… → 0≤ 4 <N → 4
i=2 → (r)mod N = -2±i5 → -2 ±i⋅5 =-2, 3, 7,-10,… → 0≤ 3 < N → 3
i=3 → (r)mod N = -3±i5 → -3 ± i ⋅5 = -3, 2, -8,… → 0≤ 2 < N → 2
i=4 → (r)mod N = -4±i5 → -4 ± i⋅5 = -4,1,-9,… → 0≤ 1 < N → 1

Gli indici così generati con il modN saranno gli unici utilizzati: essi corrispondono ai
soli campioni esistenti.
M. Usai Circuiti digitali 7_0 9
Ritardo
~ ~
x ( n − m) mod N ↔ W km X(k) (7.1.8)
dove l’operatore modulo N implica (r)mod N = r±iN per i intero, così che
0≤(r)modN<N.
Essendo per la (7.1.5) ,W=e-j2π/N , si nota che:
~
• il secondo membro della (7.1.8) è una traslazione lineare di fase di X (k )
pari a (-2πm/N)k,
• mentre il primo membro è una traslazione circolare di ~ x ( n) pari a m
campioni.

Per esempio, se m=1 allora x% ( N − 1) sostituisce x% (0) , x% (0)


sostituisce x% (1) , x% (1) sostituisce x% (2) etc..
− ln ~ ~
Modulazione W x ( n) ↔ X ( k − l ) mod N . (7.1.9)
Il ritardo e la modulazione sono proprietà duali che stabiliscono che una
traslazione circolare in un dominio comporta una moltiplicazione per una
sinusoide complessa in un altro dominio poiché W=exp(-j2π/N).

M. Usai Circuiti digitali 7_0 10


Convoluzione
~ ~ ~
X 0 (k ) = X 1 (k ) X 2 (k ) (7.1.10)

é il prodotto di due DFT di lunghezza N.

Ci si aspetta che questo corrisponda alla convoluzione di ~


x1 ( n) e ~
x 2 ( n) , e la
convoluzione comporta una inversione temporale e uno sfasamento di una
delle sequenze. Quindi poiché nelle DTF gli sfasamenti sono circolari,
~
x 0 (n) sarà dato da:
N −1
~
x0 ( n ) = ∑ ~
x1 (m) ~
x2 (n − m) mod N , n = 0,1,..., N - 1 (7.1.11)
m =0

Questa è chiamata convoluzione circolare, essa è diversa dalla convoluzione


lineare che si ottiene dalla moltiplicazione delle trasformate z oppure delle
DTFT.
(Per esempio in figura 7.1 si mostra che la convoluzione circolare di due
impulsi quadrati a e b risulta circolarmente sovrapposta e coincide con un
impulso triangolare sovrapposto come in figura 7.1 c.)

M. Usai Circuiti digitali 7_0 11


Figure 7.1 Convoluzione circolare di sequenze di N punti delle sequenze (a) e (b) e della sequenza
risultante (c)

M. Usai Circuiti digitali 7_0 12


Esempio di generazione dei campioni della convoluzione circolare (fig 7.1)
(r)modN = r±iN 0≤ (r)modN <N per N=8 0≤ r <8
Calcolo di x% 0 (0)

r±iN r±iN
1 1
-4±i8 → 4
1 0
x1(4) · x2(0-4) mod8 = 1
x1(0) · x2(0-0) mod8 = 0 0±i8 → 0 0
1 1
x1(5) · x2(0-5) mod8 = 0
x1(1) · x2(0-1) mod8 = 1 -1±i8 → 7 . .
1 1
x1(2) · x2(0-2) mod8 = 1 -2±i8 → 6 . . x1(5)= x1(6)=x1(7)= x1(8)
1 1 0
x1(3) · x2(0-3) mod8 = 1 -3±i8 → 5 x1(8) · x2(0-0) mod8 = 0

N-1
x% 0 (0)= ∑ x% 1 (m)x% 2 (0-m) modN =4
m=0
M. Usai Circuiti digitali 7_0 13
(r)modN = r±iN 0≤ (r)modN <N per N=8 0≤ r <8

Calcolo di x% 0 (1)

r±iN r±iN
1 1
1 0
x1(4) · x2(1-4) mod8 = 1 -3±i8=5
x1(0) · x2(1-0) mod8 = 0 1±i8=1
0
1 1
x1(5) · x2(1-5) mod8 = 0
x1(1) · x2(1-1) mod8 = 0 0±i8=0
1 1
. .
x1(2) · x2(1-2) mod8 = 1 -1±i8=7 . . x1(5)= x1(6)=x1(7)= x1(8)
1 1 0
x1(3) · x2(1-3) mod8 = 1 -2±i8=6 x1(8) · x2(1-0) mod8 = 0

N-1
x% 0 (1)= ∑ x% 1 (m)x% 2 (1-m) modN =3
m=0

M. Usai Circuiti digitali 7_0 14


Convoluzione lineare

La convoluzione di due funzioni continue f(t) ed h(t) è matematicamente definita


come:
+∞
g (n) = f (t ) ∗ h(t ) = ∫ f (t ) ⋅ h(t − τ ) dτ
−∞

Questo tipo di operatore matematico risulta particolarmente utile nello studio della
risposta temporale di sistemi lineari e tempo invarianti sollecitati con un qualsiasi
segnale di ingresso e per i quali sia nota la risposta all’impulso.
La funzione g(n) risulta quindi l’uscita di un sistema caratterizzato da una risposta
all’impulso pari ad h(t) e sollecitato in ingresso con un segnale f(t).

Risposta all’impulso

M. Usai Circuiti digitali 7_0 15


Se si considera la funzione f(t) non continua ma campionata con una
spaziatura temporale pari a ∆t, la funzione f(t) sarà rappresentabile con una
serie di impulsi di ampiezza pari al valore assunto dalla funzione stessa
nell’istante di campionamento.

Ognuno di questi impulsi genera in uscita una risposta simile alla funzione h(t)
caratterizzante il sistema, ma di ampiezza pari al valore assunto dalla funzione
stessa nell’istante di campionamento.

Poiché il sistema è lineare, si ha che il valore dell’uscita ad un certo istante t0


sarà dato dalla somma dei valori assunti, in quello stesso istante, dalle risposte
del sistema a tutti gli impulsi applicati in precedenza:
n = +∞ n = +∞ n = +∞
g (t 0 ) = ∑ g n (t0 ) = ∑ f n (tn ) ⋅ h(τ 0 ) = ∑ f n (t n ) ⋅ h(t0 − t n )
n = −∞ n = −∞ n = −∞

M. Usai Circuiti digitali 7_0 16


In un istante generico t si avrà che:
n = +∞
g (t ) = ∑f (t n ) ⋅ h(t − t n )
n = −∞

Facendo tendere a zero ∆t=t-tn , la funzione f(t) diventa continua e


l’equazione si trasforma nell’espressione della convoluzione di due
funzioni continue f(t) e h(t) con la sostituzione dell’operatore integrale
all’operatore sommatoria e l’introduzione di una variabile fittizia per
l’integrazione.

M. Usai Circuiti digitali 7_0 17


Esempio di convoluzione lineare di due segnali

M. Usai Circuiti digitali 7_0 18


Nei sistemi digitali, i segnali vengono rappresentati sotto forma di sequenze
di lunghezza finita e la convoluzione di due sequenze é definita nella
forma : +∞
g ( n) = ∑ f ( m) ⋅ h ( n − m) -∞ ≤ n ≤ ∞
m = −∞

f(m) sequenza di ingresso definita per - ∞≤ m ≤∞


h(m) sequenza descrittiva della risposta all’impulso del sistema in esame per
-∞≤ m ≤∞

La determinazione dei valori assunti dai vari campioni della funzione g(n)
può essere effettuata attraverso i seguenti quattro passi:
1) Riflessione della sequenza h(m) intorno all’asse delle ordinate di tutti i
valori, per ottenere la funzione h(-m)
2) Traslazione della sequenza h(-m) verso il valore n desiderato per ottenere
così la sequenza h(n-m)
3) Esecuzione di tutti i prodotti f(m)·h(n-m), campione, per un determinato
valore di n
4) Somma di tutti i prodotti sull’indice m al fine di ottenere il valore della
funzione g(n) relativo ad un determinato valore dell’indice n.
M. Usai Circuiti digitali 7_0 19
Quindi nella convoluzione lineare
l'operazione base comporta che f(n) sia
moltiplicato per h(m) invertito e
traslato linearmente, per poi sommare i
valori dei prodotti.
Per ottenere i valori successivi della
sequenza che rappresenta la
convoluzione, le due sequenze sono
successivamente traslate l'una rispetto
all'altra.
Come esempio si considerino le due
sequenze riportate in tabella di
lunghezza N=8:
m 0 1 2 3 4 5 6 7
h(m) 8 7 6 5 4 3 2 1
f(m) 5 5 5 5 0 0 0 0

In figura sono graficamente illustrate le


fasi di calcolo del prodotto di
convoluzione.
M. Usai Circuiti digitali 7_0 20
n g(n)
0 40=(8*5) La sequenza così
1 75=(40+35)
ottenuta, di lunghezza
pari a:
2 105=(75+30)
3 130=(75+25)
N1+N2-1=15,
4 110 assumerà i valori
5 90
riportati nella seguente
tabella.
6 70
7 50
Quella così definita
8 30 viene chiamata:
9 15
10 5 convoluzione lineare
11 0
e, per sequenze di
12 0
lunghezza diversa N1 ed
13 0
N2 fornirà una sequenza
14 0 di campioni N1+N2-1.
M. Usai Circuiti digitali 7_0 21
Convoluzione circolare

Se le sequenze presentano un numero di campioni finito la convoluzione può


essere calcolata mediante l’operatore della DFT inversa. Questo calcolo è noto
come convoluzione circolare per la periodicità dell’operatore DTF, infatti, la
trasformata di una sequenza temporale discreta, periodica e lunghezza finita è
anch’essa periodica nel dominio della frequenza.

La convoluzione circolare di due sequenze discrete e periodiche di periodo N è


data da:
N −1
g ( n) = ∑ f ( m) ⋅ h ( n − m) 0 ≤ n ≤ N −1
m=0

con g(n) anch’essa periodica di periodo N.


Dal punto di vista sia rappresentativo che computazionale, è molto diffuso in
questo contesto l’utilizzo dei registri circolari.

M. Usai Circuiti digitali 7_0 22


Quindi per la convoluzione circolare dove il numero dei campioni é
limitato, si può immaginare di:

• riportare la I° sequenza di N punti esatti, intorno alla circonferenza della


base di un cilindro in senso orario.

• La II° sequenza di N punti, invertita rispetto al tempo, viene anch'essa


riportata sulla circonferenza della base di un cilindro in senso antiorario.

Se si immagina di mettere uno dei due cilindri all'interno dell'altro, i


successivi valori nella convoluzione possono essere ottenuti
moltiplicando i valori sul primo cilindro per i corrispondenti valori sul
secondo cilindro e facendo poi la somma dei prodotti risultanti.

Per generare i valori successivi della convoluzione, si ruota ogni volta un


cilindro rispetto all'altro di una posizione corrispondente allo sfasamento
tra due punti.

M. Usai Circuiti digitali 7_0 23


Restano sempre valide le modalità di calcolo descritte per la convoluzione
lineare, per cui il caricamento di questi registri:
• si effettua partendo da una prefissata posizione iniziale e caricando, secondo
il verso orario, gli N campioni della sequenza f(n) ed
• in modo antiorario quelli della sequenza h(n) ottenendo in pratica la
h(-n), come illustrato nella figura dell’esempio riportato di seguito.

Il primo valore di g(n) si ottiene eseguendo il prodotto tra i campioni in


corrispondenza radiale nei due registri circolari e sommando poi tutti i
prodotti.

Per ottenere il secondo valore di g(n) è necessario prima far ruotare in


senso orario il registro interno corrispondente alla sequenza h(n), e poi
effettuare la somma dei prodotti tra i campioni radialmente corrispondenti,
si prosegue in questo modo fino a quando il registro interno non avrà
effettuato una rotazione completa.

M. Usai Circuiti digitali 7_0 24


Esempio di convoluzione circolare

Siano date le sequenza f(n) h(n) riportate in tabella:

n 0 1 2 3 4 5 6 7

f(n) 5 5 5 2 2 2 2 2

h(n) 0.64 0.32 0.16 0.08 0.04 0.02 0.01 0

g(n) 4.49 5.42 5.90 4.22 3.38 2.96 2.75 2.63

Settore di partenza

Registri circolari
• r. c. esterno è fisso
• r. c. interno ruotante in senso orario Convoluzione circolare
M. Usai Circuiti digitali 7_0 25
Quindi i campioni della sequenza di convoluzione si ottengono
eseguendo:
• il prodotto tra i campioni in corrispondenza radiale nei due registri
circolari e
• sommando poi tutti i prodotti.
Si procede in questo modo sino a quando il registro interno non avrà
effettuato una rotazione completa.

Il calcolo della convoluzione circolare richiede che le due sequenze siano


di uguale lunghezza.

Per ottenere, con la convoluzione circolare, gli stessi risultati della


convoluzione lineare, è necessario prolungare le due sequenze con
un certo numero di zeri ( zero padding).

M. Usai Circuiti digitali 7_0 26


Esempio: la sequenza 1 ha 8 campioni e
la sequenza 2 ha 16 campioni
• la sequenza della convoluzione lineare avrà 23 (8+16-1) campioni

• la sequenza della convoluzione circolare avrà lo stesso numero di campioni


se aggiungiamo 15 (23-8) zeri alla sequenza 1 e 7 (23-16) zeri alla sequenza
2.

In generale se le due sequenze sono di lunghezza N1 ed N2,


• la convoluzione lineare sarà una sequenza con M=N1+N2-1
e quindi
• la convoluzione circolare sarà una sequenza con lo stesso numero di
campioni M delle sequenze, se, prima di applicare l’operatore di
convoluzione circolare si aggiungono:
- un numero di zeri pari a M-N2 alla sequenza 2
- un numero di zeri pari a M-N1 alla sequenza 1

M. Usai Circuiti digitali 7_0 27


Moltiplicazione
1 N −1
~ ~ ~
x1 (n) ~
x2 ( n ) ↔ ∑ X 1 (l ) X 2 (k − l ) mod N , (7.1.12)
N l =0

che è il duale della proprietà di convoluzione.

Quindi la moltiplicazione in ciascun dei domini DFT (tempo o frequenza)


implica la convoluzione (circolare) nell’altro dominio.

Relazione di Parseval
N −1
1 N −1 %
∑ ∑
2 2
%
x ( n ) = X ( k ) . (7.1.13)
n =0 N k =0
Coniugazione
~ ~
x * ( n) ↔ X * (− k ) mod N , (7.1.14)

o equivalentemente
~ ~
x * (n) ↔ X * ( N − k ), k = 0, 1, 2,..., N - 1.

M. Usai Circuiti digitali 7_0 28


Serie discrete di Fourier

La rappresentazione della serie discreta di Fourier (Discrete Fourier Series


DFS) consiste nell’utilizzare le funzioni x% (n) e X% (k ) definite nella (7.1.4)
e (7.1.6) senza ridurre il campo di definizione dei valori n e k nell’intervallo
0, 1, …, N-1, in questo caso x% (n) e X% (k ) diventano sequenze periodiche
con periodo N (facilmente dimostrabile, tenendo presente che WN=1).
Questa è chiamata rappresentazione serie discreta di Fourier (DFS) di x% (n)

Per esempio, le limitazioni del mod N nelle relazioni DFT in (7.1.8), (7.1.9),
(7.1.11), (7.1.12), (7.1.14) possono essere ricondotte alle corrispondenti
relazioni DFS.
Le convoluzioni in (7.1.11) e (7.1.12) sono quindi chiamate convoluzioni
periodiche (periodic convolutions).
In particolare la proprietà della coniugazione in (7.1.14) diventa in termini di
DFS semplicemente:

x% *(n) ↔ X% *(− k ) (7.1.15)


M. Usai Circuiti digitali 7_0 29
Segnale a valore reale

Se x% (n) è reale, in base alla (7.1.15) e al fatto che x(n) = x*(n) si ha che:
X% *(k ) = X% *(− k ), (7.1.16)
cioè X% (k ) è una sequenza simmetrica coniugata.
Nella tabella 7.1 sono riportate altre proprietà di simmetria relative alla DFT, dove
per semplicità sono state espresse in termini di DFS.

Tabella 1 DFT (DFS) Proprietà di simmetria


~
x ( − n) ~
X (k )
Reale Parte reale pari;
Parte immaginaria dispari
Reale e pari Reale e pari
Reale e dispari Immaginario e dispari
~
x ( n) = − ~
x (n + N / 2) ~
X (k ) =0 per k pari

M. Usai Circuiti digitali 7_0 30


Per la DFS (serie discreta di Fourier)

una sequenza pari è quella che soddisfa semplicemente:

~
x ( n) = ~
x ( − n) ~ ~
oppure X (k ) = X (−k )

mentre una sequenza dispari soddisfa:

~ ~ ~
x ( n) = - ~
x ( − n) oppure X (k ) = - X (−k ) .

M. Usai Circuiti digitali 7_0 31


.

Queste definizioni devono essere modificate per la DFT (trasformata discreta di


Fourier), per tener conto del fatto che l’indice n è vincolato ad assumere un
numero di valori finito, 0≤ n < N-1 perciò:

~
x(n) = ~
x(N - n), n = 1, 2, . . . , N - 1 ⎫

o ⎬ pari
X(k) = X(N - k), k = 1, 2, . . ., N - 1⎪⎭
~ ~

~
x(n) = − ~
x(N - n), n = 1, 2, . . . , N - 1 ⎫
o ⎪

~ ~ ⎬ dispari
X(k) = − X(N - k), k = 1, 2, . . ., N - 1⎪
~ ⎪⎭
con ~x(0) = 0 o X(0) = 0.

M. Usai Circuiti digitali 7_0 32