栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

傅里叶级数与傅里叶变换

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

傅里叶级数与傅里叶变换

傅里叶级数与傅里叶变换_Part7_离散傅里叶变换的性质 0、Part6 内容复习

离散傅里叶变换/逆变换的公式如下:

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−1​x(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)=N1​n=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−1​x(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)=N1​k=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−1​x(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−1​x(n)e−i(N−k)N2πn​=n=0∑N−1​x(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−1​x(n)e−i(2πn+kN2πn​)=n=0∑N−1​x(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−1​x(n)[cos(−kN2πn​)−jsin(−kN2πn​)]=n=0∑N−1​x(n)[cos(kN2πn​)+jsin(kN2πn​)]=n=0∑N−1​x(n)cos(kN2πn​)+n=0∑N−1​x(n)sin(kN2πn​)⋅j=ak​+bk​j​

而
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−1​x(n)e−ikN2πn​=n=0∑N−1​x(n)[cos(kN2πn​)−jsin(kN2πn​)]=n=0∑N−1​x(n)cos(kN2πn​)−n=0∑N−1​x(n)sin(kN2πn​)⋅j=ak​−bk​j​

因此可得, 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)。

2、幅值相位性质 2.1 原理证明

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−1​x(n)e−i0=n=0∑N−1​x(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−1​x(n)e−i2N​N2πn​=n=0∑N−1​x(n)e−inπ=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 ( 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×N1​k=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​+bk​j, X ( k ) = a k − b k j Xleft( k right) = {a_k} - {b_k}j X(k)=ak​−bk​j

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​+bk​j)[cos(kN2πn​)+sin(kN2πn​)j]+(ak​−bk​j)[cos(2πn−kN2πn​)+sin(2πn−kN2πn​)j]=(ak​+bk​j)[cos(kN2πn​)+sin(kN2πn​)j]+(ak​−bk​j)[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} =ak​cos(kN2πn​)+[ak​sin(kN2πn​)+bk​cos(kN2πn​)]j−bk​sin(kN2πn​)+ak​cos(kN2πn​)−[ak​sin(kN2πn​)+bk​cos(kN2πn​)]j−bk​sin(kN2πn​)=2ak​cos(kN2πn​)−2bk​sin(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 ​2ak​​cos(kN2πn​)−(2ak​)2+(2bk​)2 ​2bk​​sin(kN2πn​)]=2ak2​+bk2​ ​×[cosφk​cos(kN2πn​)−sinφk​sin(kN2πn​)]=2ak2​+bk2​ ​cos(kN2πn​+φk​)=Ak​cos(kN2πn​+φk​),Ak​=2ak2​+bk2​ ​,φk​=arctanak​bk​​​


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​+A1​cos(1N2πn​+φ1​)+A2​cos(2N2πn​+φ2​)+⋯+A2N​−1​cos((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) Ak​cos(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​=arctanak​bk​​=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°就能得到余弦的相位。

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} 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−1​x(n)e−i(2πn+kN2πn​)=n=0∑N−1​x(n)e−i(2πn+kN2πn​)=n=0∑N−1​x(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−1​x(n)[cos(2πn+kN2πn​)−jsin(2πn+kN2πn​)]=n=0∑N−1​x(n)[cos(kN2πn​)−jsin(kN2πn​)]=n=0∑N−1​x(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即可】


从图中可以看出离散傅里叶变换是周期性质的,其中每个周期开始的第一个值,是直流分量。用下图用红色方框分别构框住了三个周期。

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;
% 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_离散傅里叶变换的性质

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017915.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号