为何要进行傅立叶变换,究竟有何意义?如何用MATLAB实现快速傅立叶变换?本文从 FFT 的由来开始讲起,而后在 MATLAB 中实现了 FFT 的计算,并给你们详细地解读了 FFT 的变换结果,最后还介绍了 FFT 的一个应用实例。html
为何要进行傅立叶变换,究竟有何意义?如何用MATLAB实现快速傅立叶变换?本文从 FFT 的由来开始讲起,而后在 MATLAB 中实现了 FFT 的计算,并给你们详细地解读了 FFT 的变换结果,最后还介绍了 FFT 的一个应用实例。html
Y = fft(x) % x 为一个序列(向量),存放采集信号的数据
Y = fft(x,n) % x 的定义同上,n 定义计算数据的个数
若是n 大于x 的长度,在x 的末尾添加0,使得x 的长度等于n
若是n 小于x 的长度,截取x 中的前n 个数来进行计算
Y 返回fft 的结果,为一个复数序列(向量)
建议:采用第一种格式的用法,而且保证x 的个数为偶数
频谱关于中间位置对称(序号位置0 和N/2 除外),MATLAB 的FFT 为对称谱
看MATLAB 中FFT 的频谱,只须要看一半
幅值不受影响,可是实部或虚部的值,会出现0 的状况
看MATLAB 中FFT 的频谱,应该看幅值
FFT结果的数据长度:时域N个点-->频域为N/2+1个点
x轴频率点的设置:采样频率为Fs时,频谱图的最高频率为Fs/2(具体请参照采样定理)
综合上述两点:x轴的频率点为:(0:1:N/2)*Fs/N
复数的幅值修正:复数序列Y的幅值,须要进行转换,才能获得与时域中对应信号的幅值。
复数的相位:计算Y的相位,获得与时域中对应信号的相位值
进行傅里叶变换FFT的两个基本问题
采样频率为多少合适?
-根据采样定理:Fs≥2Fc,实际应用中须要更大的Fs
须要采集多少个点?
-频谱图中,频率的坐标间隔(频率分辨率):Fs/N(Page13)
-Fs=2000Hz,N=100,Fs/N=20
-原信号含有60Hz,72Hz频率成分,(72–60)<20x
-N增大至1000,Fs/N=2,(72–60)>2√