傅里叶级数与傅里叶变换_Part7_离散傅里叶变换的性质
0、Part6 内容复习
离散傅里叶变换/逆变换的公式如下:
X ( n ) = ∑ k = 0 N − 1 x ( k ) e − i n 2 π k N X\left( n \right) = \sum\limits_{k = 0}^{N - 1} {x\left( k \right){e^{ - in\frac{{2\pi 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 ] x\left( m \right) = \frac{1}{N}\sum\limits_{n = 0}^{N - 1} {\left[ {X\left( n \right) \cdot {e^{in\frac{{2\pi 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 X\left( k \right) \triangleq \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - ik\frac{{2\pi 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 ] x\left( n \right) = \frac{1}{N}\sum\limits_{k = 0}^{N - 1} {\left[ {X\left( k \right) \cdot {e^{ik\frac{{2\pi 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 X\left( k \right) \triangleq \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - ik\frac{{2\pi 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 ) X\left( {N - k} \right) = \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - i\left( {N - k} \right)\frac{{2\pi n}}{N}}}} = \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - i\left( {2\pi n - k\frac{{2\pi 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^{ - i\theta }} = \cos \theta - j\sin \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 ) ] X\left( {N - k} \right) = \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - i\left( {2\pi n + k\frac{{2\pi n}}{N}} \right)}}} = \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\left[ {\cos \left( {2\pi n - k\frac{{2\pi n}}{N}} \right) - j\sin \left( {2\pi n - k\frac{{2\pi 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} X\left( {N - k} \right) &= \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\left[ {\cos \left( { - k\frac{{2\pi n}}{N}} \right) - j\sin \left( { - k\frac{{2\pi n}}{N}} \right)} \right]} \\\\ & = \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\left[ {\cos \left( {k\frac{{2\pi n}}{N}} \right) + j\sin \left( {k\frac{{2\pi n}}{N}} \right)} \right]} \\\\ & = \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\cos \left( {k\frac{{2\pi n}}{N}} \right)} + \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\sin \left( {k\frac{{2\pi 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} X\left( k \right) &= \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - ik\frac{{2\pi n}}{N}}}} \\\\ &= \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\left[ {\cos \left( {k\frac{{2\pi n}}{N}} \right) - j\sin \left( {k\frac{{2\pi n}}{N}} \right)} \right]} \\\\ &= \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\cos \left( {k\frac{{2\pi n}}{N}} \right)} - \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\sin \left( {k\frac{{2\pi 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 ) X\left( {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 } X\left( {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 ) F\left( {k \cdot \frac{{2\pi }}{{NT}}} \right) F(k⋅NT2π)中的 k ⋅ 1 N T k \cdot \frac{1}{{NT}} k⋅NT1,为什么没有 × 2 π \times 2\pi ×2π,如果 × 2 π \times 2\pi ×2π,频率单位就是弧度制rad/s, 如果没有 × 2 π \times 2\pi ×2π ,频率单位就是Hz。
也就是说 X(k)对应的频率是 2 π k N T \frac{{2\pi k}}{{NT}} NT2πk (rad/s) | k N T \frac{{ k}}{{NT}} NTk (Hz)。
2、幅值相位性质
2.1 原理证明
X ( 0 ) = ∑ n = 0 N − 1 x ( n ) e − i 0 = ∑ n = 0 N − 1 x ( n ) X\left( 0 \right) = \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - i0}}} = \sum\limits_{n = 0}^{N - 1} {x\left( 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 π ) X\left( {\frac{N}{2}} \right) = \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - i\frac{N}{2}\frac{{2\pi n}}{N}}}} = \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - in\pi }}} = \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\cos \left( {n\pi } \right)} - \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\sin \left( {n\pi } \right)} j = \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\cos \left( {n\pi } \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 ) X\left( {\frac{N}{2}} \right) X(2N)也没有虚部,也是直流分量。
下面考虑 x ( n ) x\left( 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 x\left( n \right) = N \times \frac{1}{N}\sum\limits_{k = 0}^{N - 1} {\left[ {X\left( k \right) \cdot {e^{ik\frac{{2\pi n}}{N}}}} \right]} \\\\ = X\left( 0 \right) + X\left( 1 \right){e^{i\frac{{2\pi n}}{N}}} + X\left( 2 \right){e^{i2\frac{{2\pi n}}{N}}} + \cdots + X\left( {\frac{N}{2}} \right)\cos \left( {n\pi } \right) + X\left( {\frac{N}{2} + 1} \right){e^{i\left( {\frac{N}{2} + 1} \right)\frac{{2\pi n}}{N}}} + \cdots + X\left( {N - 1} \right){e^{i\left( {N - 1} \right)\frac{{2\pi 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} = X\left( 0 \right) + X\left( {\frac{N}{2}} \right)\cos \left( {n\pi } \right) A0=X(0)+X(2N)cos(nπ) , 根据傅里叶变换的共轭性质设 X ( N − k ) = a k + b k j X\left( {N - k} \right) = {a_k} + {b_k}j X(N−k)=ak+bkj, X ( k ) = a k − b k j X\left( 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} X\left( k \right){e^{ik\frac{{2\pi n}}{N}}} + X\left( {N - k} \right){e^{i\left( {N - k} \right)\frac{{2\pi n}}{N}}}\\\\ = \left( {{a_k} + {b_k}j} \right)\left[ {\cos \left( {k\frac{{2\pi n}}{N}} \right) + \sin \left( {k\frac{{2\pi n}}{N}} \right)j} \right] + \left( {{a_k} - {b_k}j} \right)\left[ {\cos \left( {2\pi n - k\frac{{2\pi n}}{N}} \right) + \sin \left( {2\pi n - k\frac{{2\pi n}}{N}} \right)j} \right]\\\\ = \left( {{a_k} + {b_k}j} \right)\left[ {\cos \left( {k\frac{{2\pi n}}{N}} \right) + \sin \left( {k\frac{{2\pi n}}{N}} \right)j} \right] + \left( {{a_k} - {b_k}j} \right)\left[ {\cos \left( {k\frac{{2\pi n}}{N}} \right) - \sin \left( {k\frac{{2\pi 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( {k\frac{{2\pi n}}{N}} \right) + \left[ {{a_k}\sin \left( {k\frac{{2\pi n}}{N}} \right) + {b_k}\cos \left( {k\frac{{2\pi n}}{N}} \right)} \right]j - {b_k}\sin \left( {k\frac{{2\pi n}}{N}} \right) \\\\+ {a_k}\cos \left( {k\frac{{2\pi n}}{N}} \right) - \left[ {{a_k}\sin \left( {k\frac{{2\pi n}}{N}} \right) + {b_k}\cos \left( {k\frac{{2\pi n}}{N}} \right)} \right]j - {b_k}\sin \left( {k\frac{{2\pi n}}{N}} \right)\\\\ = 2{a_k}\cos \left( {k\frac{{2\pi n}}{N}} \right) - 2{b_k}\sin \left( {k\frac{{2\pi 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( {k\frac{{2\pi n}}{N}} \right) - \frac{{2{b_k}}}{{\sqrt {{{\left( {2{a_k}} \right)}^2} + {{\left( {2{b_k}} \right)}^2}} }}\sin \left( {k\frac{{2\pi n}}{N}} \right)} \right]\\\\ = 2\sqrt {a_k^2 + b_k^2} \times \left[ {\cos {\varphi _k}\cos \left( {k\frac{{2\pi n}}{N}} \right) - \sin {\varphi _k}\sin \left( {k\frac{{2\pi n}}{N}} \right)} \right]\\\\ = 2\sqrt {a_k^2 + b_k^2} \cos \left( {k\frac{{2\pi n}}{N} + {\varphi _k}} \right)\\\\ = {A_k}\cos \left( {k\frac{{2\pi n}}{N} + {\varphi _k}} \right),{A_k} = 2\sqrt {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 x\left( n \right) = X\left( 0 \right) + X\left( {\frac{N}{2}} \right)\cos \left( {n\pi } \right) + \sum\limits_{k = 1}^{\frac{N}{2} - 1} {\left[ {X\left( k \right){e^{ik\frac{{2\pi n}}{N}}} + X\left( {N - k} \right){e^{i\left( {N - k} \right)\frac{{2\pi n}}{N}}}} \right]} \\\\ = {A_0} + {A_1}\cos \left( {1\frac{{2\pi n}}{N} + {\varphi _1}} \right) + {A_2}\cos \left( {2\frac{{2\pi n}}{N} + {\varphi _2}} \right) + \cdots + {A_{\frac{N}{2} - 1}}\cos \left( {\left( {\frac{N}{2} - 1} \right)\frac{{2\pi 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 ) X\left( k \right),X\left( {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 ) X\left( k \right),X\left( {N - k} \right) X(k),X(N−k) 会产生一个 A k cos ( k 2 π n N + φ k ) {A_k}\cos \left( {k\frac{{2\pi 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} = 2\sqrt {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( {k\frac{{2\pi n}}{N} + {\varphi _k}} \right) = \sin \left[ {{{90}^o} + \left( {k\frac{{2\pi n}}{N} + {\varphi _k}} \right)} \right] = \sin \left( {k\frac{{2\pi 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°就能得到余弦的相位。
3、周期性质
3.1 原理证明
下面从理论上去证明离散傅里叶变换的周期性质。
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} X\left( {N + k} \right) &= \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - i\left( {2\pi n + k\frac{{2\pi n}}{N}} \right)}}} = \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - i\left( {2\pi n + k\frac{{2\pi n}}{N}} \right)}}} \\\\ &= \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\left[ {\cos \left( {2\pi n + k\frac{{2\pi n}}{N}} \right) - j\sin \left( {2\pi n + k\frac{{2\pi 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} X\left( {N + k} \right) &= \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\left[ {\cos \left( {2\pi n + k\frac{{2\pi n}}{N}} \right) - j\sin \left( {2\pi n + k\frac{{2\pi n}}{N}} \right)} \right]} \\\\ &= \sum\limits_{n = 0}^{N - 1} {x\left( n \right)\left[ {\cos \left( {k\frac{{2\pi n}}{N}} \right) - j\sin \left( {k\frac{{2\pi n}}{N}} \right)} \right]} \\\\ & = \sum\limits_{n = 0}^{N - 1} {x\left( n \right){e^{ - ik\frac{{2\pi n}}{N}}} = } X\left( 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 ) X\left( {N + k} \right) = X\left( k \right) X(N+k)=X(k)这说明了离散傅里叶变换是以 N N N为周期的周期函数。
3.1 MatLAB小实验
把X(k) | X(N+k) | X(2N+k)全部都画出来了。【代码,将上述MatlLAB的num赋值为3即可】
从图中可以看出离散傅里叶变换是周期性质的,其中每个周期开始的第一个值,是直流分量。用下图用红色方框分别构框住了三个周期。
4、附录:MatLAB代码
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;% DFTX = zeros(1,num*N+1);for k=1:num*Nfor n = 1:NX(k) = X(k) + x(n)*exp((-(k-1)*2*pi*n/N)*1i);endendfigure(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]);%IDFTy = zeros(1,N);for n=1:Nfor k = 1:Ny(n) = y(n) + (1/N)*X(k)*exp(((k-1)*2*pi*n/N)*1i);endendfigure(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_离散傅里叶变换的性质