深入浅出解释FFT(二)——fft对信噪比影响

这几天在做pipelined ADC的动态特性的 仿真,如SNR,THD,SNDR.....既然是动态特性,就不可避免地要用到FFT,因此这几天研究了一些关于FFT的东西,同时收集了一些公司/个人的SNR测试 程序,小有收获,同时还有些疑点,故开此讨论贴,希望能有高人点拨一二,同时将自己的心得与各位分享。
    首先说FFT,FFT一个很重要的 问题是频谱泄露。但是频谱泄露不是必须的,也就是说如果设置合理,可以避免频谱泄露(尤其是对于仿真而言)。在满足“相关采样”的前提下,就不会有频谱泄露。即M/N=Fin/Fs,M为时域的周期数,N为采点数,Fs为采样频率,Fin为 信号频率。如果严格满足这个关系,则完全不会有频谱泄露,不用任何的加窗处理。这对于仿真而言,是完全可以做到的。同时N必须是2的整数次幂,这是由FFT算法本身要求的。
    关于“相关采样”,M最好是1或者奇数,不要取为偶数。是不是取偶数就一定不可以呢?不尽然,打个比方,如果你取M=2,N=1024,这种取法等效为M=1,N=512。你在时域用了两倍的时间,结果采样点数还要打个对折,那就完全不划算了。再举个例子,M=1,N=256,Fs=2^16, Fin=256,此时满足相干采样,没有频谱泄露;M=3,N=256,Fs=2^16, Fin=3*256,此时满足相干采样,没有频谱泄露;那么这两种取法都满足相干采样,没有频谱泄露,那这两种取法有没有区别呢?我认为没有区别。所以对于仿真而言完全可以只取M=1,这样节省时间。对于测试而言,仪器带来的误差不可避免,而且时间不会很长,可以取多个周期。
    如果不满足相关采样,则有频谱泄露,需要加窗,同时mat lab处理的时候需要加span,这就需要取多个周期。
  

    FFT先暂时说这么多,疏漏之处不可避免,如果哪位有兴趣,可以再讨论。接下来说说SNR,SNR需要利用FFT的结果来进行计算。
    SNR(dB)=signal peak(dB)-noise floor(dB)-10logN,注意这个表达式中的最后一项,这一项是由FFT带来的躁底的变化。我个人到目前为止在这一点上还不明白,但是我找到了别人的一种说法,我列出来,希望能有高人点拨。最后一项可以这么理解:为了产生N个FFT频率分支,在时域需要N个采样点,采样N次会把信号的功率增加N^2倍,而噪声的能量只会增加N倍,所以信噪比会增加N倍。所以在计算SNR的时候需要把FFT带来的躁底的变化减掉。对于以上解释,我还没弄明白,希望得到高人指点。

   在 Matlab做FFT并计算SNR的时候,涉及到对FFT数据的处理。以下是做FFt的命令y=fft(x),出来是N个向量(复数),在算功率的时候需要取模的平方, power=abs(y)*abs(y)。这里有一个问题,平方之前y需要做处理吗?有些 资料中在平方前会作如下处理y=fft(x),y1=2/N*fft(x), power=abs(y1)*abs(y1)。我对这个做法的理解:2是将双边转成单边;至于除N,我不理解,是不是做了这个处理,就可以消除FFT对躁底的影响?
  • 9
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值