fast fourier transform. fourier 变换 : 存在的条件 : 反变换 : jean baptiste joseph fourier...
Post on 14-Dec-2015
309 Views
Preview:
TRANSCRIPT
Fast Fourier Transform
Fourier 变换 :
G(k) g(x) g(x)e ikxdx
存在的条件 :
g(x)2 dx
反变换 :
g(x) 1 G(k) 1
2G(k)eikxdk
Jean Baptiste Joseph Fourier (1768 - 1830)
当 g(x) 为实函数
Gr (k) g(x)cos(kx)dx
Gi (k) g(x)sin(kx)dx
g(x) Gr (k) iGi (k)
g(x) G(k) A(k)ei(k )
A G Gr2 Gi
2
A amplitude spectrum, or magnitude spectrum
phase spectrum
A2 G 2 Gr2 Gi
2 power spectrum
delta 函数
x x e ikxdx
x e ik0 1
x 1
t
(t)
-20 -10 10 20
-0.5
0.5
1
1.5
2
TopHat 函数
G(k) g(x)e ikxdx
g(x) 1; x 1
0; x 1
G(k) 2 cos(kx)dx0
1 2
sin(k)k
2sinc(k)
0{cos( )}tFcos(0t)
t
cosine 函数
G(k) cos(k0x)e ikxdx
g(x) cos(k0x)
G(k) cos(k0x)cos(kx)dx
(k k0 )(k k0 )
G(k) sin(k0x)e ikxdx
g(x) sin(k0x)
G(k) i sin(k0x)sin(kx)dx
i (k k0 ) (k k0 )
sine 函数
-3 -2 -1 1 2 3
-2
2
4
6
8
g x G(k)
)()()( )( axdeeaxgdxeaxgaxg ikaaxikikx
g x a e ikaG(k)
g ax g(ax)e ikxdx
1a
g(ax)e i
k
aax
d(ax)
g ax 1a
G(ka
)
位移性质 :
相似性质 :
a-a
12a
1a
g(x)2 dx
G(k)2 d(k)
energy theorem, Rayleigh’s theorem
g(x) k0 g(x)e ikxdx
k0
g(x)dx
The zero frequency point
反变换 :
g(x) 1 G(k) 1
2G(k)eikxdk
,)()(
dxexgkG ikx
) (
) (2
) ( )( 2
1)(
2
1
xg
xx
xxikikx dkexgdxdkekG
代入
常用的常用的 FourierFourier 变换变换
连续傅立叶变换(Continuous Fourier Transform)
dfefHth
dtethfH
ift
ift
2
2
离散傅立叶变换(Discrete Fourier Transform)
1
0
2
1
0
2
1 N
n
Niknnk
N
k
Niknkn
eHN
h
ehH
dxuxixfuFxf ]2exp[)()()( where 1i
)()}({1 xfuF
duuxiuF ]2exp[)(
1
0
]/2exp[)(1
)(N
x
NuxixfN
uF For u=0,1,2,…,N-1
1
0
]/2exp[)()(N
u
Nuxiufxf For x=0,1,2,…,N-1
连续傅立叶变换 (Continuous Fourier Transform)
离散傅立叶变换 (Discrete Fourier Transform)
常用的其他定义
连续 Fourier 变换 (Continuous Fourier Transform)
反变换
DFT:
IDFT:
矩阵形式的 DFT
HFn
F11 Fxf fF
nx H1
k
n
k
jknj xf
1
0
j
n
j
jknk f
nx
1
0
1
n
i
n e
2
n
i
n e
2
omega = exp(-2*pi*i/n);j = 0:n-1;k = j';F = omega.^(k*j);
% an easier,and quicker, way to generate F isF = fft(eye(n));
Fast Fourier TransformFast Fourier Transform
• The Fast Fourier Transform (FFT) is a very efficient algorithm for performing a discrete Fourier transform
• FFT principle first used by Gauss in 1805?• FFT algorithm published by Cooley & Tukey i
n 1965• In 1969, the 2048 point analysis of a seismic t
race took 13 ½ hours. Using the FFT, the same task on the same machine took 2.4 seconds!
Requires N2 complex multiplies and N(N-1) complex additions
1
0
2
][][N
n
N
nkj
enxkX
1
0
2
][1
][N
n
N
nkj
ekXN
nx
离散 Fourier 变换 (DFT)
( 此处定义与教材和 MATLAB 保持一致 )
*][ )( knN
knN
nNkN WWW
nNkN
NnkN
knN WWW ][][
对称性 :
周期性 :
WN=e-j2π/N
1
02/
1
02/
1
0
21
0
2
1
0
22
22
]12[]2[
)](12[)](2[
][][
][][
NN
NN
r
rkN
kN
r
rkN
r
rkN
kN
r
rkN
oddn
nkN
evenn
nkN
N
n
nkN
WrxWWrx
WrxWWrx
WnxWnx
WnxkX
samples odd ofDFT N/2
sampleseven ofDFT N/2
][][][ kHWkGkX kN
两个长度为 N/2 的 DFT 之和
• Cross feed of G[k] and H[k] in flow diagram is called a “butterfly”, due to the shape
rNW
)(
)2(
rN
NrN
W
W
rNW -1
or simplify:
X[0…7]
x[0,2,4,6]
x[1,3,5,7]
N/2
DFT
N/2
DFT
7...0NW
1
0
/2N
k
Niknkn exX
1
0
/21 N
n
Niknnk eX
Nx
1
0
21
0
2 1 N
nn
N
kk X
Nx
)( , /2101/20
12/
012
)2//(2/212/
02
)2//(2
12/
012
/)12(212/
02
/)2(2
1
0
/2
Nik
kkk
Nikk
N
kk
NijkNikN
jj
Nijk
N
jj
NkjiN
jj
Nkji
N
jj
Nijkk
eWXWXXeX
xeexe
xexe
xeX
1,,1,0 Nk
因为 WN/2 = -1, X k0 和 X k
1 具有周期 N/2,
)12/,...,1,0(
101
100
NkXWXX
XWXX
kk
kk
kk
kk
)]]([)()[()]([)()(
)]()[()()(
)()(
74
32
54
164
22
44
0
74
32
54
164
22
44
0
76
54
32
166
44
22
0
77
66
55
44
33
22
10
7
0
xWxWxWxWxWxWxWx
xWxWxWxWxWxWxWx
xWxWxWxWxWxWxWx
xWxWxWxWxWxWxWxxWX
kkkkkkk
kkkkkkk
kkkkkkk
kkkkkkk
jj
jkk
12/,...,1,0for , 102
10 NkXWXXXWXX kk
kN/kkk
kk
对 N=8 ,
There are N/2 butterflies for this stage of the FFT, and each butterfly requires one multiplication
Diagrammatically (butterfly),
The splitting of {Xk} into two half-size DFTs can be repeated on X k
0 and X k1 themselves,
713
303
13
612
202
12
511
101
11
410
000
10
313
303
03
212
202
02
111
101
01
010
000
00
XXWXX
XXWXX
XXWXX
XXWXX
XXWXX
XXWXX
XXWXX
XXWXX
14/,...,1,0for ,
,112101
4112101
0120004
012000
NkXWXXXXXX
XWXXXWXX
kk
kN/kkk
kk
kk
kN/kkk
kk
– { X k00} is the N/4-point DFT of {x0, x4,…, xN-4},
– { X k01} is the N/4-point DFT of {x2, x6,…, xN-2},
– { X k10} is the N/4-point DFT of {x1, x5,…, xN-3},
– { X k11} is the N/4-point DFT of {x3, x7,…, xN-1} .
713
303
13
111
2101
111
612
202
12
110
0100
110
511
101
11
111
2101
101
410
000
10
110
0100
100
313
303
03
011
2001
011
212
202
02
010
0000
010
111
101
01
011
2001
001
010
000
00
010
0000
000
XXWXXXWXX
XXWXXXWXX
XXWXXXWXX
XXWXXXWXX
XXWXXXWXX
XXWXXXWXX
XXWXXXWXX
XXWXXXWXX
• bit reversal0, 1, 2, 3, 4, 5, 6, 7 is reordered to 0, 4, 2, 6, 1, 5, 3, 7
Decimal Binary Binary Decimal
0 000 000 0
1 001 100 42 010 010 23 011 110 64 100 001 15 101 101 56 110 011 37 111 111 7
828
38
48
58
68
78
28
48
68
28
48
68
38
688
48
78
28
58
48
48
48
48
58
28
78
488
68
38
68
48
28
68
48
28
78
68
58
48
38
288
8
1
11
1
1111
1
11
1
11111111
F
)/2exp( nin
定义 c=[0 2 4 6 1 3 5 7]
58
788
38
28
48
68
68
28
68
28
48
48
78
58
388
68
48
28
58
788
38
28
48
68
68
28
68
28
48
48
78
58
388
68
48
28
8
1
11
1
11111111
1
11
1
11111111
)(:,
cF
444
4448 )(:,
FF
FFcF
428
38
28
84
000
000
000
0001
8
)7:2:1(
)7:2:0(
)7:2:1(
)7:2:0()()(:,
4
4
4
4
444
44488
xF
xF
I
I
x
x
FF
FFcxcFxF
BT
BT
T
B
T
ydyy
ydyy
d
xFy
xFy
xFy
*.)7:4(
*.)3:0(
,,,1
)7:2:1(
)7:2:0(
38
288
8
4
4
function y=fft(x,n)
if n=1
y=x
else
m=n/2; w=e-i2πn
yT=fft(x(0:2:n),m)
yB=fft(x(1:2:n),m)
d=[1,w,…,wm-1]T
z=d.*yB
y=[yT+z; yB+z]
end
设 n=2t
12/2/
2/2/
2/2/
1
,,,1diag,
/,2,
LLLL
LL
LLL
qLrq
ntn
I
IB
LnrLBIA
PAAF
fftgui(y) 产生 4 个 plots: real(y),imag(y),real(fft(y)),imag(fft(y))
1,...,0,1
0
njyY k
n
k
jknj
n
i
n e
2
print -deps FftGui.epsprint –depsc2 FftGui.eps
y0=1,y1=…=yn-1=0,
1,...,0,1001 0 njeY j
y0=0,y1=1,y2=…=yn-1=0,
00102
n
ji
j eY
FFT is the sum of two sinusoids
Nyquist point
若 y 是长度为 n 的实向量 ,Y=fft(y), 则
real(Y0)=∑yj
imag(Y0)=0
real(Yj)=real(Yn-j), j=1,…,n/2
imag(Yj)=-imag(Yn-j),j=1,…,n/2
697
770
852
941
1209 1336 1477
% the sampling rate. Fs = 32768; t = 0:1/Fs:0.25;
% the button in position (k,j)for k=1:4 for j=1:3 y1 = sin(2*pi*fr(k)*t); y2 = sin(2*pi*fc(j)*t); y = (y1 + y2)/2; input('Press any key:)'); sound(y,Fs) endend
load sunspot.dat
t = sunspot(:,1)'; wolfer = sunspot(:,2)'; n = length(wolfer); c = polyfit(t,wolfer,1); trend = polyval(c,t); plot(t,[wolfer; trend],'-', t,wolfer,'k.')
y = wolfer - trend; Y = fft(y);
Fs = 1; % Sample rate f = (0:n/2)*Fs/n; pow = abs(Y(1:n/2+1)); plot([f; f],[0*pow; pow],'c-', … f,pow,'b.', ... 'linewidth',2, 'markersize',16)
plot(fft(eye(17)))axis square
Chebyshev Polynomial
)arccoscos()( xnxCn iiininn eexeexC
2
1,
2
1)(
wwzwwzC nn
n
1
2
1,
2
1)(
eezneezC nnn 2
1),cosh(
2
1)(
扩充到复平面
扩充到 |z|>1
kkkk 12
1 2
递推关系 : )()(2)( 11 xCxxCxC nnn
0)1( 2'"2 ynxyyx满足微分方程 :
第二类 Chebyshev 多项式
)sinh(cosh
)coshsinh()(
1
1
t
tntun
shg,hold onfplot('x',[-1,1])fplot('2*x^2-1',[-1,1])fplot('4*x^3-3*x',[-1,1])fplot('8*x^4-8*x^2+1',[-1,1])fplot('16*x^5-20*x^3+5*x',[-1,1])
“We do not make things,
We make things better.”
The price (in euros) of a magazine has changed as follows
Estimate the price in November 2002 by extrapolating these data.
Nov. 87
Dec. 88
Nov. 90
Jan. 93
Jan. 95
Jan. 96
Nov. 96
Nov. 00
4.5 5 6 6.5 7 7.5 8 8
1 14 37 63 87 99109
157
180
4.5 5 6 6.5 7 7.5 8 8 ?
top related