离散傅里叶变换/逆变换的公式如下:
X ( n ) = ∑ k = 0 N − 1 x ( k ) e − i n 2 π k N Xleft( n right) = sumlimits_{k = 0}^{N - 1} {xleft( k right){e^{ - infrac{{2pi k}}{N}}}} X(n)=k=0∑N−1x(k)e−inN2πk
x ( m ) = 1 N ∑ n = 0 N − 1 [ X ( n ) ⋅ e i n 2 π m N ] xleft( m right) = frac{1}{N}sumlimits_{n = 0}^{N - 1} {left[ {Xleft( n right) cdot {e^{infrac{{2pi m}}{N}}}} right]} x(m)=N1n=0∑N−1[X(n)⋅einN2πm]
换换符号,等价重写一下
X ( k ) ≜ ∑ n = 0 N − 1 x ( n ) e − i k 2 π n N Xleft( k right) triangleq sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - ikfrac{{2pi n}}{N}}}} X(k)≜n=0∑N−1x(n)e−ikN2πn
x ( n ) = 1 N ∑ k = 0 N − 1 [ X ( k ) ⋅ e i k 2 π n N ] xleft( n right) = frac{1}{N}sumlimits_{k = 0}^{N - 1} {left[ {Xleft( k right) cdot {e^{ikfrac{{2pi n}}{N}}}} right]} x(n)=N1k=0∑N−1[X(k)⋅eikN2πn]
1、共轭性质 1.1 原理证明X ( k ) ≜ ∑ n = 0 N − 1 x ( n ) e − i k 2 π n N Xleft( k right) triangleq sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - ikfrac{{2pi n}}{N}}}} X(k)≜n=0∑N−1x(n)e−ikN2πn
X ( N − k ) = ∑ n = 0 N − 1 x ( n ) e − i ( N − k ) 2 π n N = ∑ n = 0 N − 1 x ( n ) e − i ( 2 π n − k 2 π n N ) Xleft( {N - k} right) = sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - ileft( {N - k} right)frac{{2pi n}}{N}}}} = sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - ileft( {2pi n - kfrac{{2pi n}}{N}} right)}}} X(N−k)=n=0∑N−1x(n)e−i(N−k)N2πn=n=0∑N−1x(n)e−i(2πn−kN2πn)
根据欧拉公式, e − i θ = cos θ − j sin θ {e^{ - itheta }} = cos theta - jsin theta e−iθ=cosθ−jsinθ
X ( N − k ) = ∑ n = 0 N − 1 x ( n ) e − i ( 2 π n + k 2 π n N ) = ∑ n = 0 N − 1 x ( n ) [ cos ( 2 π n − k 2 π n N ) − j sin ( 2 π n − k 2 π n N ) ] Xleft( {N - k} right) = sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - ileft( {2pi n + kfrac{{2pi n}}{N}} right)}}} = sumlimits_{n = 0}^{N - 1} {xleft( n right)left[ {cos left( {2pi n - kfrac{{2pi n}}{N}} right) - jsin left( {2pi n - kfrac{{2pi n}}{N}} right)} right]} X(N−k)=n=0∑N−1x(n)e−i(2πn+kN2πn)=n=0∑N−1x(n)[cos(2πn−kN2πn)−jsin(2πn−kN2πn)]
因为cos和sin函数都是以2Π为周期的函数,因此
X ( N − k ) = ∑ n = 0 N − 1 x ( n ) [ cos ( − k 2 π n N ) − j sin ( − k 2 π n N ) ] = ∑ n = 0 N − 1 x ( n ) [ cos ( k 2 π n N ) + j sin ( k 2 π n N ) ] = ∑ n = 0 N − 1 x ( n ) cos ( k 2 π n N ) + ∑ n = 0 N − 1 x ( n ) sin ( k 2 π n N ) ⋅ j = a k + b k j begin{aligned} Xleft( {N - k} right) &= sumlimits_{n = 0}^{N - 1} {xleft( n right)left[ {cos left( { - kfrac{{2pi n}}{N}} right) - jsin left( { - kfrac{{2pi n}}{N}} right)} right]} \\ & = sumlimits_{n = 0}^{N - 1} {xleft( n right)left[ {cos left( {kfrac{{2pi n}}{N}} right) + jsin left( {kfrac{{2pi n}}{N}} right)} right]} \\ & = sumlimits_{n = 0}^{N - 1} {xleft( n right)cos left( {kfrac{{2pi n}}{N}} right)} + sumlimits_{n = 0}^{N - 1} {xleft( n right)sin left( {kfrac{{2pi n}}{N}} right)} cdot j\\ &= {a_k} + {b_k}j end{aligned} X(N−k)=n=0∑N−1x(n)[cos(−kN2πn)−jsin(−kN2πn)]=n=0∑N−1x(n)[cos(kN2πn)+jsin(kN2πn)]=n=0∑N−1x(n)cos(kN2πn)+n=0∑N−1x(n)sin(kN2πn)⋅j=ak+bkj
而
X
(
k
)
=
∑
n
=
0
N
−
1
x
(
n
)
e
−
i
k
2
π
n
N
=
∑
n
=
0
N
−
1
x
(
n
)
[
cos
(
k
2
π
n
N
)
−
j
sin
(
k
2
π
n
N
)
]
=
∑
n
=
0
N
−
1
x
(
n
)
cos
(
k
2
π
n
N
)
−
∑
n
=
0
N
−
1
x
(
n
)
sin
(
k
2
π
n
N
)
⋅
j
=
a
k
−
b
k
j
begin{aligned} Xleft( k right) &= sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - ikfrac{{2pi n}}{N}}}} \\ &= sumlimits_{n = 0}^{N - 1} {xleft( n right)left[ {cos left( {kfrac{{2pi n}}{N}} right) - jsin left( {kfrac{{2pi n}}{N}} right)} right]} \\ &= sumlimits_{n = 0}^{N - 1} {xleft( n right)cos left( {kfrac{{2pi n}}{N}} right)} - sumlimits_{n = 0}^{N - 1} {xleft( n right)sin left( {kfrac{{2pi n}}{N}} right)} cdot j\\ & = {a_k} - {b_k}j end{aligned}
X(k)=n=0∑N−1x(n)e−ikN2πn=n=0∑N−1x(n)[cos(kN2πn)−jsin(kN2πn)]=n=0∑N−1x(n)cos(kN2πn)−n=0∑N−1x(n)sin(kN2πn)⋅j=ak−bkj
因此可得, X ( N − k ) = X ∗ ( k ) Xleft( {N - k} right) = {X^*}left( k right) X(N−k)=X∗(k)
1.2 MatLAB小实验x = 1000 +500* sin(2 * pi * 50 * t + pi/6) + 250 * sin(2 * pi * 150 * t + pi/4) + 100 * sin(2 * pi * 250 * t+pi/3);
其中 T = 0.001; N = 2000; t = (1:N)*dt;
对序列进行x(n)离散傅里叶变换,可得X(k)的幅值和相位图
从实验结果确实来看,离散傅里叶变换的对称位置,幅值相等,相位相反。确实的共轭的。即
X
(
N
−
k
)
=
X
∗
(
k
)
,
k
∈
{
0
,
1
,
2
,
⋯
,
N
−
1
}
Xleft( {N - k} right) = {X^*}left( k right),k in left{ {0,1,2, cdots ,N - 1} right}
X(N−k)=X∗(k),k∈{0,1,2,⋯,N−1}
MatLAB代码附在文末4.4中。
X(k)对应的频率注意到4.4附录的MatLAB代码有一行,单独拎出来进行解释解释。
figure(2); plot((0:N)/N/dt,abs(X)/N,'b','LineWidth',1.5);
(0:N)/N/dt相当于
F
(
k
⋅
2
π
N
T
)
Fleft( {k cdot frac{{2pi }}{{NT}}} right)
F(k⋅NT2π)中的
k
⋅
1
N
T
k cdot frac{1}{{NT}}
k⋅NT1,为什么没有
×
2
π
times 2pi
×2π,如果
×
2
π
times 2pi
×2π,频率单位就是弧度制rad/s, 如果没有
×
2
π
times 2pi
×2π ,频率单位就是Hz。
也就是说 X(k)对应的频率是
2
π
k
N
T
frac{{2pi k}}{{NT}}
NT2πk (rad/s) |
k
N
T
frac{{ k}}{{NT}}
NTk (Hz)。
X ( 0 ) = ∑ n = 0 N − 1 x ( n ) e − i 0 = ∑ n = 0 N − 1 x ( n ) Xleft( 0 right) = sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - i0}}} = sumlimits_{n = 0}^{N - 1} {xleft( n right)} X(0)=n=0∑N−1x(n)e−i0=n=0∑N−1x(n) 没有虚部,是直流分量, 假设 N N N是偶数。
X ( N 2 ) = ∑ n = 0 N − 1 x ( n ) e − i N 2 2 π n N = ∑ n = 0 N − 1 x ( n ) e − i n π = ∑ n = 0 N − 1 x ( n ) cos ( n π ) − ∑ n = 0 N − 1 x ( n ) sin ( n π ) j = ∑ n = 0 N − 1 x ( n ) cos ( n π ) Xleft( {frac{N}{2}} right) = sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - ifrac{N}{2}frac{{2pi n}}{N}}}} = sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - inpi }}} = sumlimits_{n = 0}^{N - 1} {xleft( n right)cos left( {npi } right)} - sumlimits_{n = 0}^{N - 1} {xleft( n right)sin left( {npi } right)} j = sumlimits_{n = 0}^{N - 1} {xleft( n right)cos left( {npi } right)} X(2N)=n=0∑N−1x(n)e−i2NN2πn=n=0∑N−1x(n)e−inπ=n=0∑N−1x(n)cos(nπ)−n=0∑N−1x(n)sin(nπ)j=n=0∑N−1x(n)cos(nπ)
X ( N 2 ) Xleft( {frac{N}{2}} right) X(2N)也没有虚部,也是直流分量。
下面考虑 x ( n ) xleft( n right) x(n) ,仍然假设 N N N 是偶数
N × x ( n ) = N × 1 N ∑ k = 0 N − 1 [ X ( k ) ⋅ e i k 2 π n N ] = X ( 0 ) + X ( 1 ) e i 2 π n N + X ( 2 ) e i 2 2 π n N + ⋯ + X ( N 2 ) cos ( n π ) + X ( N 2 + 1 ) e i ( N 2 + 1 ) 2 π n N + ⋯ + X ( N − 1 ) e i ( N − 1 ) 2 π n N begin{array}{l} N times xleft( n right) = N times frac{1}{N}sumlimits_{k = 0}^{N - 1} {left[ {Xleft( k right) cdot {e^{ikfrac{{2pi n}}{N}}}} right]} \\ = Xleft( 0 right) + Xleft( 1 right){e^{ifrac{{2pi n}}{N}}} + Xleft( 2 right){e^{i2frac{{2pi n}}{N}}} + cdots + Xleft( {frac{N}{2}} right)cos left( {npi } right) + Xleft( {frac{N}{2} + 1} right){e^{ileft( {frac{N}{2} + 1} right)frac{{2pi n}}{N}}} + cdots + Xleft( {N - 1} right){e^{ileft( {N - 1} right)frac{{2pi n}}{N}}} end{array} N×x(n)=N×N1k=0∑N−1[X(k)⋅eikN2πn]=X(0)+X(1)eiN2πn+X(2)ei2N2πn+⋯+X(2N)cos(nπ)+X(2N+1)ei(2N+1)N2πn+⋯+X(N−1)ei(N−1)N2πn
定义直流分量 A 0 = X ( 0 ) + X ( N 2 ) cos ( n π ) {A_0} = Xleft( 0 right) + Xleft( {frac{N}{2}} right)cos left( {npi } right) A0=X(0)+X(2N)cos(nπ) , 根据傅里叶变换的共轭性质设 X ( N − k ) = a k + b k j Xleft( {N - k} right) = {a_k} + {b_k}j X(N−k)=ak+bkj, X ( k ) = a k − b k j Xleft( k right) = {a_k} - {b_k}j X(k)=ak−bkj
X ( k ) e i k 2 π n N + X ( N − k ) e i ( N − k ) 2 π n N = ( a k + b k j ) [ cos ( k 2 π n N ) + sin ( k 2 π n N ) j ] + ( a k − b k j ) [ cos ( 2 π n − k 2 π n N ) + sin ( 2 π n − k 2 π n N ) j ] = ( a k + b k j ) [ cos ( k 2 π n N ) + sin ( k 2 π n N ) j ] + ( a k − b k j ) [ cos ( k 2 π n N ) − sin ( k 2 π n N ) j ] begin{array}{l} Xleft( k right){e^{ikfrac{{2pi n}}{N}}} + Xleft( {N - k} right){e^{ileft( {N - k} right)frac{{2pi n}}{N}}}\\ = left( {{a_k} + {b_k}j} right)left[ {cos left( {kfrac{{2pi n}}{N}} right) + sin left( {kfrac{{2pi n}}{N}} right)j} right] + left( {{a_k} - {b_k}j} right)left[ {cos left( {2pi n - kfrac{{2pi n}}{N}} right) + sin left( {2pi n - kfrac{{2pi n}}{N}} right)j} right]\\ = left( {{a_k} + {b_k}j} right)left[ {cos left( {kfrac{{2pi n}}{N}} right) + sin left( {kfrac{{2pi n}}{N}} right)j} right] + left( {{a_k} - {b_k}j} right)left[ {cos left( {kfrac{{2pi n}}{N}} right) - sin left( {kfrac{{2pi n}}{N}} right)j} right] end{array} X(k)eikN2πn+X(N−k)ei(N−k)N2πn=(ak+bkj)[cos(kN2πn)+sin(kN2πn)j]+(ak−bkj)[cos(2πn−kN2πn)+sin(2πn−kN2πn)j]=(ak+bkj)[cos(kN2πn)+sin(kN2πn)j]+(ak−bkj)[cos(kN2πn)−sin(kN2πn)j]
= a k cos ( k 2 π n N ) + [ a k sin ( k 2 π n N ) + b k cos ( k 2 π n N ) ] j − b k sin ( k 2 π n N ) + a k cos ( k 2 π n N ) − [ a k sin ( k 2 π n N ) + b k cos ( k 2 π n N ) ] j − b k sin ( k 2 π n N ) = 2 a k cos ( k 2 π n N ) − 2 b k sin ( k 2 π n N ) begin{array}{l} = {a_k}cos left( {kfrac{{2pi n}}{N}} right) + left[ {{a_k}sin left( {kfrac{{2pi n}}{N}} right) + {b_k}cos left( {kfrac{{2pi n}}{N}} right)} right]j - {b_k}sin left( {kfrac{{2pi n}}{N}} right) \\+ {a_k}cos left( {kfrac{{2pi n}}{N}} right) - left[ {{a_k}sin left( {kfrac{{2pi n}}{N}} right) + {b_k}cos left( {kfrac{{2pi n}}{N}} right)} right]j - {b_k}sin left( {kfrac{{2pi n}}{N}} right)\\ = 2{a_k}cos left( {kfrac{{2pi n}}{N}} right) - 2{b_k}sin left( {kfrac{{2pi n}}{N}} right) end{array} =akcos(kN2πn)+[aksin(kN2πn)+bkcos(kN2πn)]j−bksin(kN2πn)+akcos(kN2πn)−[aksin(kN2πn)+bkcos(kN2πn)]j−bksin(kN2πn)=2akcos(kN2πn)−2bksin(kN2πn)
= ( 2 a k ) 2 + ( 2 b k ) 2 × [ 2 a k ( 2 a k ) 2 + ( 2 b k ) 2 cos ( k 2 π n N ) − 2 b k ( 2 a k ) 2 + ( 2 b k ) 2 sin ( k 2 π n N ) ] = 2 a k 2 + b k 2 × [ cos φ k cos ( k 2 π n N ) − sin φ k sin ( k 2 π n N ) ] = 2 a k 2 + b k 2 cos ( k 2 π n N + φ k ) = A k cos ( k 2 π n N + φ k ) , A k = 2 a k 2 + b k 2 , φ k = arctan b k a k begin{array}{l} = sqrt {{{left( {2{a_k}} right)}^2} + {{left( {2{b_k}} right)}^2}} times left[ {frac{{2{a_k}}}{{sqrt {{{left( {2{a_k}} right)}^2} + {{left( {2{b_k}} right)}^2}} }}cos left( {kfrac{{2pi n}}{N}} right) - frac{{2{b_k}}}{{sqrt {{{left( {2{a_k}} right)}^2} + {{left( {2{b_k}} right)}^2}} }}sin left( {kfrac{{2pi n}}{N}} right)} right]\\ = 2sqrt {a_k^2 + b_k^2} times left[ {cos {varphi _k}cos left( {kfrac{{2pi n}}{N}} right) - sin {varphi _k}sin left( {kfrac{{2pi n}}{N}} right)} right]\\ = 2sqrt {a_k^2 + b_k^2} cos left( {kfrac{{2pi n}}{N} + {varphi _k}} right)\\ = {A_k}cos left( {kfrac{{2pi n}}{N} + {varphi _k}} right),{A_k} = 2sqrt {a_k^2 + b_k^2} ,{varphi _k} = arctan frac{{{b_k}}}{{{a_k}}} end{array} =(2ak)2+(2bk)2 ×[(2ak)2+(2bk)2 2akcos(kN2πn)−(2ak)2+(2bk)2 2bksin(kN2πn)]=2ak2+bk2 ×[cosφkcos(kN2πn)−sinφksin(kN2πn)]=2ak2+bk2 cos(kN2πn+φk)=Akcos(kN2πn+φk),Ak=2ak2+bk2 ,φk=arctanakbk
N
×
x
(
n
)
=
X
(
0
)
+
X
(
N
2
)
cos
(
n
π
)
+
∑
k
=
1
N
2
−
1
[
X
(
k
)
e
i
k
2
π
n
N
+
X
(
N
−
k
)
e
i
(
N
−
k
)
2
π
n
N
]
=
A
0
+
A
1
cos
(
1
2
π
n
N
+
φ
1
)
+
A
2
cos
(
2
2
π
n
N
+
φ
2
)
+
⋯
+
A
N
2
−
1
cos
(
(
N
2
−
1
)
2
π
n
N
+
φ
N
2
−
1
)
begin{array}{l} N times xleft( n right) = Xleft( 0 right) + Xleft( {frac{N}{2}} right)cos left( {npi } right) + sumlimits_{k = 1}^{frac{N}{2} - 1} {left[ {Xleft( k right){e^{ikfrac{{2pi n}}{N}}} + Xleft( {N - k} right){e^{ileft( {N - k} right)frac{{2pi n}}{N}}}} right]} \\ = {A_0} + {A_1}cos left( {1frac{{2pi n}}{N} + {varphi _1}} right) + {A_2}cos left( {2frac{{2pi n}}{N} + {varphi _2}} right) + cdots + {A_{frac{N}{2} - 1}}cos left( {left( {frac{N}{2} - 1} right)frac{{2pi n}}{N} + {varphi _{frac{N}{2} - 1}}} right) end{array}
N×x(n)=X(0)+X(2N)cos(nπ)+k=1∑2N−1[X(k)eikN2πn+X(N−k)ei(N−k)N2πn]=A0+A1cos(1N2πn+φ1)+A2cos(2N2πn+φ2)+⋯+A2N−1cos((2N−1)N2πn+φ2N−1)
根据上述推导的结论,已经可以给出我们启示。下面用MatLAB实验进行分析和探讨。
2.2 MatLAB小实验还是用1.2使用的序列进行分析
x = 1000 +500* sin(2 * pi * 50 * t + pi/6) + 250 * sin(2 * pi * 150 * t + pi/4) + 100 * sin(2 * pi * 250 * t+pi/3);
其中 T = 0.001; N = 2000; t = (1:N)*dt;
对序列进行x(n)离散傅里叶变换,可得X(k)的幅值和相位图
在我们给出的信号当中,存在一个频率为50Hz的信号500* sin(2 * pi * 50 * t + pi/6)分量,显然它的幅值是500,相位是30°
但在离散傅里叶变换的结果中,却是250的幅值,-60°的相位。 这是为什么呢? 下面进行详细分析。
找到50Hz的信号对应的 X ( k ) , X ( N − k ) Xleft( k right),Xleft( {N - k} right) X(k),X(N−k)
X(k) = 2.5000e+05 - 4.3301e+05i
X(N-k) = 2.5000e+05 + 4.3301e+05i
在本例中 N = 2000
我先给 X(k)和X(N-k)来一个1/N
X(k) = 125 - 216.5i
= ak + bki
X(N-k) = 125 + 216.5i
= ak - bki
根据2.1的推导结论可知,在离散傅里叶逆变换的时,
X
(
k
)
,
X
(
N
−
k
)
Xleft( k right),Xleft( {N - k} right)
X(k),X(N−k) 会产生一个
A
k
cos
(
k
2
π
n
N
+
φ
k
)
{A_k}cos left( {kfrac{{2pi n}}{N} + {varphi _k}} right)
Akcos(kN2πn+φk) 信号。
其中, A k = 2 a k 2 + b k 2 = 2 × 125 2 + ( − 216.5 ) 2 = 499 . 989 {A_k} = 2sqrt {a_k^2 + b_k^2} = 2 times sqrt {{{125}^2} + {{left( { - 216.5} right)}^2}} = {rm{499}}{rm{.989}} Ak=2ak2+bk2 =2×1252+(−216.5)2 =499.989
到这里,就可以解释信号明明是500的振幅,离散傅里叶变换却产生的是两个幅值为250的复数。
应用:要得到一个频率点的振幅, 离散傅里叶变换之后, 先/N,再*2。
相位性质分析延续上述的分析,重点关注相位, φ k = arctan b k a k = arctan − 216.5 125 = arctan ( − 1 . 732 ) = − 6 0 o {varphi _k} = arctan frac{{{b_k}}}{{{a_k}}} = arctan frac{{ - 216.5}}{{125}} = arctan left( {{rm{ - 1}}{rm{.732}}} right) = - {60^o} φk=arctanakbk=arctan125−216.5=arctan(−1.732)=−60o
cos ( k 2 π n N + φ k ) = sin [ 90 o + ( k 2 π n N + φ k ) ] = sin ( k 2 π n N + 30 o ) cos left( {kfrac{{2pi n}}{N} + {varphi _k}} right) = sin left[ {{{90}^o} + left( {kfrac{{2pi n}}{N} + {varphi _k}} right)} right] = sin left( {kfrac{{2pi n}}{N} + {{30}^o}} right) cos(kN2πn+φk)=sin[90o+(kN2πn+φk)]=sin(kN2πn+30o) ,
给点小提示 sin ( 90 o + θ ) = sin [ 90 − ( − θ ) ] = cos ( − θ ) = cos θ sin left( {{{90}^o} + theta } right) = sin left[ {90 - left( { - theta } right)} right] = cos left( { - theta } right) = cos theta sin(90o+θ)=sin[90−(−θ)]=cos(−θ)=cosθ
到这里,就能解释给定正弦信号的相位明明是30°,离散傅里叶变换产生的相位却是-60°了。
应用:要得到一个频率点的sin相位, 离散傅里叶变换之后, +90°。
进一步分析,假设我把原始信号换成如下的信号呢?
x = 1000 +500* cos(2 * pi * 50 * t + pi/6) + 250 * cos(2 * pi * 150 * t + pi/4) + 100 * cos(2 * pi * 250 * t+pi/3);
结果如下
仍然只关注50Hz处,结果可以看出相位是30°与给定相位符和。 因为给定的原始信号本身就是余弦信号,所以不需要+90°就能得到余弦的相位。
下面从理论上去证明离散傅里叶变换的周期性质。
X
(
N
+
k
)
=
∑
n
=
0
N
−
1
x
(
n
)
e
−
i
(
2
π
n
+
k
2
π
n
N
)
=
∑
n
=
0
N
−
1
x
(
n
)
e
−
i
(
2
π
n
+
k
2
π
n
N
)
=
∑
n
=
0
N
−
1
x
(
n
)
[
cos
(
2
π
n
+
k
2
π
n
N
)
−
j
sin
(
2
π
n
+
k
2
π
n
N
)
]
begin{aligned} Xleft( {N + k} right) &= sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - ileft( {2pi n + kfrac{{2pi n}}{N}} right)}}} = sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - ileft( {2pi n + kfrac{{2pi n}}{N}} right)}}} \\ &= sumlimits_{n = 0}^{N - 1} {xleft( n right)left[ {cos left( {2pi n + kfrac{{2pi n}}{N}} right) - jsin left( {2pi n + kfrac{{2pi n}}{N}} right)} right]} end{aligned}
X(N+k)=n=0∑N−1x(n)e−i(2πn+kN2πn)=n=0∑N−1x(n)e−i(2πn+kN2πn)=n=0∑N−1x(n)[cos(2πn+kN2πn)−jsin(2πn+kN2πn)]
同用到cos和sin函数都是以2Π为周期的函数,因此
X ( N + k ) = ∑ n = 0 N − 1 x ( n ) [ cos ( 2 π n + k 2 π n N ) − j sin ( 2 π n + k 2 π n N ) ] = ∑ n = 0 N − 1 x ( n ) [ cos ( k 2 π n N ) − j sin ( k 2 π n N ) ] = ∑ n = 0 N − 1 x ( n ) e − i k 2 π n N = X ( k ) begin{aligned} Xleft( {N + k} right) &= sumlimits_{n = 0}^{N - 1} {xleft( n right)left[ {cos left( {2pi n + kfrac{{2pi n}}{N}} right) - jsin left( {2pi n + kfrac{{2pi n}}{N}} right)} right]} \\ &= sumlimits_{n = 0}^{N - 1} {xleft( n right)left[ {cos left( {kfrac{{2pi n}}{N}} right) - jsin left( {kfrac{{2pi n}}{N}} right)} right]} \\ & = sumlimits_{n = 0}^{N - 1} {xleft( n right){e^{ - ikfrac{{2pi n}}{N}}} = } Xleft( k right) end{aligned} X(N+k)=n=0∑N−1x(n)[cos(2πn+kN2πn)−jsin(2πn+kN2πn)]=n=0∑N−1x(n)[cos(kN2πn)−jsin(kN2πn)]=n=0∑N−1x(n)e−ikN2πn=X(k)
X ( N + k ) = X ( k ) Xleft( {N + k} right) = Xleft( k right) X(N+k)=X(k)这说明了离散傅里叶变换是以 N N N为周期的周期函数。
3.1 MatLAB小实验把X(k) | X(N+k) | X(2N+k)全部都画出来了。【代码,将上述MatlLAB的num赋值为3即可】
从图中可以看出离散傅里叶变换是周期性质的,其中每个周期开始的第一个值,是直流分量。用下图用红色方框分别构框住了三个周期。
close all; clear all; clc;
dt = 0.001;
N = 2000;
t = (1:N)*dt;
x = 1000 + 500 * sin(2 * pi * 50 * t + pi/6) + 250 * sin(2 * pi * 150 * t + pi/4) + 100 * sin(2 * pi * 250 * t+pi/3);
% x = 1000 +500* cos(2 * pi * 50 * t + pi/6) + 250 * cos(2 * pi * 150 * t + pi/4) + 100 * cos(2 * pi * 250 * t+pi/3);
figure(1);plot(t,x,'r','LineWidth',1.5);grid on; hold on; title('生成的离散信号');
xlabel('时间 T / s');
num = 1;
% num = 3;
% DFT
X = zeros(1,num*N+1);
for k=1:num*N
for n = 1:N
X(k) = X(k) + x(n)*exp((-(k-1)*2*pi*n/N)*1i);
end
end
figure(2);plot((0:num*N)/(N*dt),abs(X)/N,'b','LineWidth',1.5);grid on; hold on; title('离散傅里叶变换-幅值'); xlabel('频率f / Hz');
axis([-100,num*1000+100,-500,1500]);
P = angle(X)*180/pi;
P1 = zeros(1,N+1);
P1(0+1)=P(0+1);
P1(100+1)=P(100+1);
P1(300+1)=P(300+1);
P1(500+1)=P(500+1);
P1(N+1-0)=P(N+1-0);
P1(N+1-100)=P(N+1-100);
P1(N+1-300)=P(N+1-300);
P1(N+1-500)=P(N+1-500);
figure(3);plot((0:N)/(N*dt),P1,'b','LineWidth',1.5);grid on; hold on; title('离散傅里叶变换-相位(仅提取了关注的位置)');
xlabel('频率f / Hz');
axis([-100,1100,-180,180]);
%IDFT
y = zeros(1,N);
for n=1:N
for k = 1:N
y(n) = y(n) + (1/N)*X(k)*exp(((k-1)*2*pi*n/N)*1i);
end
end
figure(4);plot(t,y,'k','LineWidth',1.5);grid on; hold on; title('离散傅里叶逆变换');
xlabel('时间 T / s');
figure(5);plot(t,x-y,'g','LineWidth',1.5);grid on; hold on; title('误差');
系列学习链接:欢迎大家点赞、收藏、留言讨论。
傅里叶级数与傅里叶变换_Part0_欧拉公式证明+三角函数和差公式证明
傅里叶级数与傅里叶变换_Part1_三角函数系的正交性
傅里叶级数与傅里叶变换_Part2_周期为2Π的函数展开为傅里叶级数
傅里叶级数与傅里叶变换_Part3_周期为2L的函数展开为傅里叶级数
傅里叶级数与傅里叶变换_Part4_傅里叶级数的复数形式
傅里叶级数与傅里叶变换_Part5_傅里叶级数推导傅里叶变换
傅里叶级数与傅里叶变换_Part6_离散傅里叶变换推导
傅里叶级数与傅里叶变换_Part7_离散傅里叶变换的性质



