说明:以下资源来源于《数字信号处理的 MATLAB 实现》万永革主编
一.调用方法
X=FFT(x);
X=FFT(x,N);
x=IFFT(X);
x=IFFT(X,N)
用 MATLAB 进行谱分析时注意:
(1)函数 FFT 返回值的数据结构具有对称性。
例:
N=8;
n=0:N-1;
xn=[4 3 2 6 7 8 9 0];
Xk=fft(xn)
→
Xk =
39.0000 -10.7782 + 6.2929i 0 - 5.0000i 4.7782 -
7.7071i 5.0000 4.7782 + 7.7071i 0 + 5.0000i -10.7782 - 6.2929i
Xk 与 xn 的维数相同,共有 8 个元素。Xk 的第一个数对应于直流分量,即频率值为 0。
(2)做 FFT 分析时,幅值大小与 FFT 选择的点数有关,但不影响分析结果。在 IFFT 时已
经做了处理。要得到真实的振幅值的大小,只要将得到的变换后结果乘以 2 除以 N 即可。
二.FFT 应用举例
例 1:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)。采样频率 fs=100Hz,分别绘制 N=128、1024
点幅频图。
clf;
fs=100;N=128; %采样频率和数据点数
n=0:N-1;t=n/fs; %时间序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号
y=fft(x,N); %对信号进行快速 Fourier 变换
mag=abs(y); %求得 Fourier 变换后的振幅
f=n*fs/N; %频率序列
subplot(2,2,1),plot(f,mag); %绘出随频率变化的振幅
xlabel('频率/Hz');