MATLAB如何实现傅里叶变换FFT?有何物理意义?
为什么要进行傅立叶变换,究竟有何意义?如何用MATLAB实现快速傅立叶变换?本文从 FFT 的由来开始讲起,然后在 MATLAB 中实现了 FFT 的计算,并给大家详细地解读了 FFT 的变换结果,最后还介绍了 FFT 的一个应用实例。
MATLAB中实现FFT的计算
-
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√
END
请发表评论