Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
13 settembre 2014
1 Integrale di Fourier
Consideriamo il seguente integrale di Fourier:
H(f) =
_
+
m=0
h
m
_
t t
m
_
(2)
dove > 0 `e il passo di campionamento. I campioni sono prelevati negli
istanti t
m
= t
0
+m e il numero totale di campioni prelevati `e M. il valore
dei campioni `e h
m
= h(t
m
). La funzione () `e detta kernel di interpolazione.
Il kernel `e tale che (0) = 1 e (m) = 0, m = 1, 2, . . . , dal momento che
nei punti di campionamento la sommatoria deve restituire i valori campionati.
Il kernel pu` o essere ad esempio una funzione nestra rettangolare rect(t),
una nestra triangolare (t), anche una delta di Dirac (t). Nel caso in
cui il segnale h(t) sia a banda limitata il kernel `e una funzione sinc(t) =
sin(t)/t. Utilizzando la rappresentazione (2) della funzione h(t) `e possibile
scrivere lintegrale di Fourier (1) nel seguente modo:
H(f) =
M1
m=0
h
m
_
+
_
t t
m
_
exp(j2ft)dt (3)
da cui si ottiene
H(f) =
M1
m=0
h
m
_
+
_
t t
m
_
exp(j2ft)dt (4)
1
ricordando che
_
+
_
t t
m
_
e
j2ft
dt = (f )e
j2ft
m
(5)
dove () `e la trasformata di Fourier di () Si ottiene che
H(f) = (f )
M1
m=0
h
m
exp (j2ft
m
) (6)
che riscriviamo come
H(f) = W
(f)
M1
m=0
h
m
exp (j2ft
m
) (7)
dove W
n=0
x
n
exp
_
j2k
n
N
_
(8)
per k = 0, , N 1. In altri termini dato il vettore di numeri comples-
si [x
0
, x
1
, , x
N1
] lalgoritmo FFT produce in (N log N) operazioni il
vettore di [X
0
, X
1
, , X
N1
]. Nel seguito indicheremo con la notatione
FFT
k
[x
0
, x
1
, , x
N1
] la componente numero k del vettore prodotto dalla
FFT. Ora mostriamo alcune propriet`a della FFT che ci serviranno in seguito.
Supponiamo di dover calcolare una FFT con N pari
X
k
=
N1
n=0
(1)
n
x
n
exp
_
j2k
n
N
_
(9)
per k = 0, , N 1. In cui i campioni di posto dispari sono cambiati di
segno. Il fattore del segno si pu`o scrivere come (1)
n
= exp(jn) e quindi
si ottiene
X
k
=
N1
n=0
exp
_
j2
_
k +
N
2
_
n
N
_
(10)
2
per cui si ha che
X
k
=
_
X
k+N/2
per k = 0, . . . , N/2 1
X
kN/2
per k = N/2, , N 1
(11)
cio`e il vettore
X si pu` o ottenere scambiando la prima met`a del vettore X
con la seconda. In questo caso si pu`o scrivere che
X = fftshift[X]
3 Calcolo dellintegrale di Fourier mediante
la FFT
Riconsideriamo la (7) e cerchiamo di esprmimerla utilizzando lalgoritmo di
FFT. Tenendo conto che t
m
= t
0
+ m si pu` o scrivere che
H(f) = W
m=0
h
m
exp (j2fm) (12)
Assumiamo di voler calcolare la (12) in un numero discreto di frequenze. Sce-
gliendo le frequenze in modo opportuno si pu` o impiegare la FFT. In partico-
lare si deve scegliere un numero intero N M di frequenze in cui calcolare
la (12). In generale per valori di N che sono potenze di 2 lalgoritmo FFT
`e piu eciente. Osservando la (12) e la (8) si comprende che le frequenze
devono essere del tipo
f
n
= f
0
+ n
1
N
(13)
con n = 0, , N 1 cio`e si deve scegliere una risoluzione in frequenza
che `e inversamente proporzionale alla durata del segnale osservato ovvero
f
=
1
N
. Sostituendo le frequenze (13) nella (12) si ottiene
H(f
n
) = W
(f
n
) exp (j2f
n
t
0
)
M1
m=0
h
m
exp (j2f
n
m) (14)
Nel caso in cui N > M si eettua unoperazione detta zero-padding in cui
si pongono i campioni h
m
= 0 per m = M, , N 1, in questo modo `e
possibile estendere la sommatoria no ad N 1 senza alterare il risultato.
Eettuando le dovute semplicazioni si ottiene
H(f
n
) = W
(f
n
) exp (j2f
n
t
0
)
N1
m=0
h
m
exp (j2f
0
m) exp
_
j2n
m
N
_
(15)
3
Per convenienza si pone
W
t
0
(f
n
) = W
(f
n
) exp (j2f
n
t
0
)
h
m
= h
m
exp (j2f
0
m)
e quindi si scrive
H(f
n
) = W
t
0
(f
n
)
N1
m=0
h
m
exp
_
j2n
m
N
_
(16)
che pu` o essere calcolata con una FFT
H(f
n
) = W
t
0
(f
n
)FFT
n
_
h
0
,
h
1
, ,
h
N1
_
(17)
con n = 0, , N 1.
Da notare che nella (17) non `e stata fatta nessuna approssimazione.
3.1 Casi particolari
Consideriamo il caso in cui f
0
=
k
2
, k = 0, 1, 2, in cui rientra anche
il caso in cui f
0
= 0. Si osserva che
exp (j2f
0
m) = exp (jkm)
_
1 per k pari
(1)
m
per k dispari
(18)
Quindi scegliendo f
0
= 0 si ottiene che
h
m
= h
m
per cui
H(f
n
) = W
t
0
(f
n
)FFT
n
[h
0
, h
1
, , h
N1
] (19)
con n = 0, , N 1.
Volendo determinare anche armoniche a frequenze negative occorre di-
stingure tra il caso N pari e il caso N dispari. Nel caso N pari allora si puo
semplicemente scegliere k = 1 e quindi f
0
=
1
2
. In questo modo is otterr` a
che
h
m
= (1)
m
h
m
e si determiner` a lo spettro nelle frequenze
f
n
=
1
2
+
n
N
con n = 0, , N 1. Per n = 0, , N/21 si avranno frequenze negative.
La componente continua si ha per n = N/2. Le altre frequenze per n =
N/2 + 1, , N 1 sono positive. Naturalmente si puo anche evitare di
moltiplicare per (1)
m
utilizzando la funzione fftshift ovvero si ottiene
H(f
n
) = W
t
0
(f
n
) fftshift
n
[FFT [h
0
, h
1
, , h
N1
]] (20)
4
con n = 0, , N 1.
Nel caso in cui N `e dispari allora si pu` o scegliere f
0
=
N1
2N
. In que-
sto modo si avr` a
h
m
= exp
_
j
N1
N
m
_
h
m
e si determiner` a lo spettro nelle
frequenze
f
n
=
N 1
2N
+
n
N
con n = 0, , N 1. Per n = 0, , (N 1)/2 1 si avranno frequenze
negative. La componente continua si ha per n = (N1)/2. Le altre frequenze
per n = (N 1)/2 + 1, , N 1 sono positive. Anche in questo caso si
puo anche evitare di moltiplicare per exp
_
j
N1
N
m
_
utilizzando la funzione
fftshift ovvero si ottiene
H(f
n
) = W
t
0
(f
n
) fftshift
n
[FFT [h
0
, h
1
, , h
N1
]] (21)
con n = 0, , N 1.
4 kernel ()
Nel caso in cui il kernel `e La trasformata di Fourier del kernel risulta () =
().
(f) = 1
per cui si ottiene che
W
t
0
_
+
m=0
N1
n=0
h
mn
x
_
x x
m
x
_
x
_
y y
m
y
_
(26)
dove
x
`e il passo di campionamento nella direzione x.
y
`e il passo di cam-
pionamento nella direzione y. h
mn
= h(x
m
, y
n
) `e il campione prelevato in
(x
m
, y
n
). I campioni sono prelevati nel grigliato di punti x
m
= x
0
+ m
x
e y
n
= y
0
+ n
y
e il numeoro totale di campioni prelevati `e M N. Le
funzioni
x
e
y
sono i kernel di interpolazione e il loro prodotto forma un
unico kernel di interpolazione =
x
y
che `e fattorizzato. Naturalmente
anche in questo caso si ha che
x/y
(0) = 1 e
x/y
(m) = 0, m = 1, 2, . . . .
Ora applicando lo stesso ragionemtno del caso 1D si giunge a
H(k
x
, k
y
) =
x
x
(k
x
x
)
y
y
(k
y
y
)
M1
m=0
N1
n=0
h
mn
exp (j2(x
m
k
x
+ y
n
k
y
))
(27)
dove
x
e
y
sono rispettivamente le traformate di Fourier di
x
e
y
.
Ponendo
W
y
(k
x
, k
y
) =
x
x
(k
x
x
)
y
y
(k
y
y
) (28)
si ottiene
H(k
x
, k
y
) = W
y
(k
x
, k
y
)
M1
m=0
N1
n=0
h
mn
exp (j2(x
m
k
x
+ y
n
k
y
)) (29)
6
anche in questo caso si tiene conto del campionamento e si ottiene
H(k
x
, k
y
) = W
k
x
x
0
+k
y
y
0
y
(k
x
, k
y
)
M1
m=0
N1
n=0
h
mn
exp (j2(m
x
k
x
+ n
y
k
y
))
(30)
dove
W
k
x
x
0
+k
y
y
0
y
(k
x
, k
y
) = W
y
(k
x
, k
y
) exp (j2(x
0
k
x
+ y
0
k
y
)) (31)
Anche nel caso bidimensionale `e opportuno utilizzare un algoritmo di tra-
sformata veloce di Fourier per calcolare H(k
x
, k
y
). Per far cio `e necessario
scegliere un certo numero di frequenze disposte uniformemente. Per cui si
scelgono due numeri interi U M e V N e i valori di frequenza in cui
determinare lo spettro saranno:
k
x
u
= k
x
0
+
u
x
U
(32)
k
x
v
= k
y
0
+
v
y
V
(33)
con u = 0, . . . , U 1 e v = 0, . . . , V 1. Questa scelta di frequenze per-
mette di utilizzare lalgoritmo di FFT. Infatti sostituendo le espressioni delle
frequenze(33) nella (30) ed eettuando lo zero-padding dove necessario si ha
H(k
x
u
, k
y
v
) = W
k
x
u
x
0
+k
y
v
y
0
y
(k
x
u
, k
y
v
)
U1
m=0
V 1
n=0
h
mn
exp
_
j2
_
u
m
U
+ v
n
V
__
(34)
dove
h
mn
sono i campioni demodulati deniti da
h
mn
= h
mn
exp (j2(m
x
k
x
0
+ n
y
k
y
0
)) (35)
A questo punto si pu`o introdurre lalgoritmo FFF2 nel seguente modo
H(k
x
u
, k
y
v
) = W
k
x
u
x
0
+k
y
v
y
0
y
(k
x
u
, k
y
v
)FFT2
_
h
mn
_
(36)
con u = 0, . . . , U 1 e v = 0, . . . , V 1.
Anche nel caso bidimensionale `e possibile evitare di eettuare la demo-
dulazione dei campioni scegliendo opportunamente le frequenze k
x
0
e k
y
0
co-
me fatto nel caso monodimensionale. In particolare scegliendo le frequenze
7
iniziali secondo la seguente regola.
k
x
0
=
_
_
_
1
2
x
per U pari
U1
2U
x
per U dispari
(37)
k
y
0
=
_
_
_
1
2
y
per V pari
V 1
2V
y
per V dispari
(38)
allora si ha semplicemente
H(k
x
u
, k
y
v
) = W
k
x
u
x
0
+k
y
v
y
0
y
(k
x
u
, k
y
v
) FFTSHIFT [FFT2 [h
mn
]] (39)
8