MATLAB教学视频:详解快速傅里叶变换FFT在MATLAB中的实现
为什么要进行傅里叶变换? 将时域的信号,变换到频域的正弦信号 正弦比原信号更简单,且正弦函数很早就被充分地研究,处理正弦信号,比处理原信号更简单 正弦信号的频率保持性:输入为正弦信号,输出仍是正弦信号,幅度和相位可能发生变化,但频率与原信号保持一致;只有正弦信号才拥有这样的性质
傅里叶变换的类型 非周期连续信号:傅里叶变换 周期连续信号:傅里叶级数 非周期离散信号:离散时间傅里叶变换 周期离散信号:离散傅里叶级数
从离散傅里叶级数(DFS) 到离散傅里叶变换(DFT) 从离散傅里叶变换(DFT) 到快速傅里叶变换(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)<20 x -N增大至1000,Fs/N=2,(72–60)>2 √
MATLAB FFT 案例分析