想知道有限精度对FFT的影响?Matlab仿真看看

 GrowthNudge 

  你的成长,我来助推!

公众号《成长助推》致力于分享实用工具、必备技能、思维方法,以助推成长为目标,长期有效的提供价值内容。


今日助推小目标:

1. Matlab对定点算法问题的仿真。模拟实际中会出现的问题。

2. 基于时间抽选(DIT)的FFT算法实现。给出仿真源码,可发送关键词“fi_FFT”直接下载,长期有效。


我们在分析一个信号的频谱时,通常会用到离散时间序列的DFT,而FFT则是DFT的快速算法。平时你在Matlab中采用FFT函数直接计算时,似乎并没有关系其精度问题。


而在实际的工程中,算法的处理是有限精度的,另外,DFT的系数也是有限字长的。这些因素都会影响离散时间信号DFT的最终结果。


定点FFT的算法不同,运算的有限字长效应也会不同。通常有两种评估有限精度算法影响的方法。一种是,采用详细的分析来预测对最终输出的影响;另一种则是通过采用有限精度算法来仿真系统的实现。


通常一般会采用后者,因为简单方便低成本,这就需要先对Matlab进行定点运算的设置。



Matlab程序实现了基于时间抽取(DIT)的FFT算法,采用了有限精度的定点算法。算法还计算了输入序列的全精度DFT,以及全精度和有限精度的差值。并绘图直观表现出来:




左边图是时域信号,基本看不出全精度和8位定点精度的差别。右图上面是对左边时域信号做的FFT,红色线表示全精度,蓝色线表示有限精度,下面就是二种方法的差值,并计算了最大绝对误差是0.018。


当把定点精度从8位改成4位,差别就比较明显了,最大绝对误差也扩大到了0.199。




进入《成长助推》公众号,给后台发送关键词“fi_FFT”,源程序已备好,长期有效。

你的成长,我来助推!


“成长助推”公众号将重点放在“实用工具、必备技能、思维方法”等方面,是对“雷达通信电子战”公众号的一个重要补充。


提供的价值内容会涵盖Matlab,Vivado,文献下载管理工具,网站推荐等等关于个人成长方面,也同样是提供高价值内容,并且该公众号分享内容的下载链接是长期有效的。感谢大家的支持!