MATLAB 中 fft 函数用法、性质、特性、缺陷全面深化解析(含程序)前言目前网络上在信号处理方面对 fft 函数使用泛滥,但大多数人根本就不了解它的性能,使用方法也是千奇百怪,各种程序代码鱼龙混杂,乱七八糟,误导了很多人,所以我在这里进行一下全面的演示说明,希望后来人能够少走弯路
fft信号处理中获得时域信号的频域的方法叫做傅里叶变换,但教材上的变换都是理论推导的理想、连续、无限情况,在实际的 matlab 计算中,必须是实际、离散、有限的计算,所以实现起来比较麻烦,需要各种转换
fft 函数就是为了实现快速傅里叶变换而设计的计算机算法,与传统傅里叶变换的步骤不完全一样,但通过适当的变换也能够获得时域信号的频域图形
fft 只是数值计算,不是理论推导,所以频域图形肯定有误差,但我们能够通过适当调整变换参数来提高频域图形的精确性
建议大家能够理论推导的傅里叶变换就直接在纸上推导好了再用 matlab 直接画出来就是了
所以不是因为 fft 精确,而是因为 fft 能够对大数据复杂信号变换计算快,自由度可控制性高,所以使用的人才多
fft(x)图示fft 的一些定性问题解析时域信号 x 有多少个点,fft(x)就有多少个点,这时的 fft(x)之所以是对称的,是因为fft 的方法是进行周期计算从[−2π ,2π ],所以后面的一半要翻转到负半轴,是负频率
所以有用的是 fft(x)的前一半的点
我是经过各项测试实验,才完全明白 fft 的性能
利用程序解释如下:%这里的 fft 变换有补零clear all;Fs = 1e3; %这是原始时域信号 x 的采样频率multiple=0
6; %x 进行 fft 前的补零倍数,可以增加频率分辨率time=2;t = 0:1/Fs:time-1/Fs; %这个会影响 x 的采样点数,当然点数越多,频域越精确越平滑%x = 1