matlab/simulink中关于如何使得信号FFT和IFFT前后功率保持一致

快速傅里叶变换FFT其实是一种对离散傅里叶变换DFT的快速算法
为了便于公式推导和理解,本文从DFT的公式出发进行解释,在帕萨瓦尔定律的条件下,探究如何保证FFT/IFFT前后信号功率保持一致


模型假设

我们假设有一长度为1024的序列 x ( n ) x(n) x(n),作N=1024点的FFT后得到 X ( K ) X(K) X(K)
X ( k ) = D F T [ x ( n ) ] = ∑ n = 0 N − 1 x ( n ) e − j 2 π N n k ( 0 ≤ k ≤ N − 1 ) X(k) = DFT[x(n)]= \sum_{n=0}^{N-1} x(n) e^{-j\frac{2\pi }{N}nk} (0\leq k\leq N-1) X(k)=DFT[x(n)]=n=0N1x(n)ejN2πnk(0kN1)
x ( n ) = I D F T [ X ( k ) ] = 1 N ∑ k = 0 N − 1 X ( k ) e j 2 π N k n ( 0 ≤ n ≤ N − 1 ) x(n) = IDFT[X(k)]= \frac{1}{N}\sum_{k=0}^{N-1} X(k) e^{j\frac{2\pi }{N}kn} (0\leq n\leq N-1) x(n)=IDFT[X(k)]=N1k=0N1X(k)ejN2πkn(0nN1)
可以简单记作 x ( n ) ↔ X ( k ) x(n) \leftrightarrow X(k) x(n)X(k)
根据有限长序列帕萨瓦尔定律(具体推导可见该博客
∑ n = 0 N − 1 ∣ x ( n ) ∣ 2 = 1 N ∑ k = 0 N − 1 ∣ X ( k ) ∣ 2 \sum_{n=0}^{N-1} |x(n)|^2 = \frac{1}{N}\sum_{k=0}^{N-1} |X(k)|^2 n=0N1x(n)2=N1k=0N1X(k)2
可以得知,对于有限长序列,在一个频域带限内,频域上的功率谱之和与时域上信号的功率有一个N倍的关系。

简单来说,FFT之后的信号的功率比原始信号的功率大了N倍。

FFT前后功率保持一致

在这里插入图片描述
仿真结果如上图所示,0.01152/0.00001125=1024,FFT后的信号功率大了1024倍。为了使得FFT前后信号功率保持一致,需要对FFT后的数据乘以系数 1 N \frac{1}{\sqrt{N}} N 1。对一个复数乘以 1 N \frac{1}{\sqrt{N}} N 1的增益,则其功率变为原来的 1 N \frac{1}{N} N1,保证了FFT前后信号功率一致。
在这里插入图片描述

IFFT前后功率保持一致

simulink的IFFT模块中,默认是不勾选“除以N”这个选项的。
也就是说IFFT的公式
x ( n ) = I D F T [ X ( k ) ] = 1 N ∑ k = 0 N − 1 X ( k ) e j 2 π N k n ( 0 ≤ n ≤ N − 1 ) x(n) = IDFT[X(k)]= \frac{1}{N}\sum_{k=0}^{N-1} X(k) e^{j\frac{2\pi }{N}kn} (0\leq n\leq N-1) x(n)=IDFT[X(k)]=N1k=0N1X(k)ejN2πkn(0nN1)
在simulink中默认是
I D F T [ X ( k ) ] = ∑ k = 0 N − 1 X ( k ) e j 2 π N k n ( 0 ≤ n ≤ N − 1 ) IDFT[X(k)]=\sum_{k=0}^{N-1} X(k) e^{j\frac{2\pi }{N}kn} (0\leq n\leq N-1) IDFT[X(k)]=k=0N1X(k)ejN2πkn(0nN1)

在这里插入图片描述
我们是习惯于不改变模块默认值的,以便模型具有通用性。因此,我们通常在IFFT模块后面添加一个 1 N \frac{1}{N} N1的增益模块
在这里插入图片描述

这样我们就得到了标准的 x ( n ) ↔ X ( k ) x(n) \leftrightarrow X(k) x(n)X(k)
而之前我们说过,对于标准的离散傅里叶变换对,其频域功率是时域功率的N倍。因此我们需要在标准的IFFT之后,对于时域信号再添加一个 N \sqrt{N} N 的增益模块。
1 N \frac{1}{N} N1的增益模块和 N \sqrt{N} N 的增益模块可以合并为 1 N \frac{1}{\sqrt{N}} N 1的增益模块。因此,我们在默认的IFFT模块后面也只需要添加一个 1 N \frac{1}{\sqrt{N}} N 1的增益模块即可使得IFFT前后的信号功率保持一致。
在这里插入图片描述

总结

不论是IFFT还是FFT,都需要在默认的IFFT/FFT模块后面添加一个 1 N \frac{1}{\sqrt{N}} N 1的增益模块,即可使得时域信号和频域信号的功率保持一致。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值