MATLAB中FFT的使用方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB FFT 的使用方法
2009-08-22 11:00
说明:以下资源来源于《数字信号处理的 MATLAB ;现》万永革主编
一.调用方法
X=FFT(X);
X=FFTX, 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 =
-10.7782 + 6.2929i 7.7071i 5.0000 0 + 5.0000i -10.7782 - 6.2929i Xk 与xn 的维数相同,共有8个元素。Xk 的第一个数对应于直流分量,即频率值 为00
(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; %时间序歹 U x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); % 信号
39.0000
5.0000i
4.7782 + 7.7071i 4.7782
y=fft(x,N); %对信号进行快速Fourier变换
mag=abs(y); %求得Fourier变换后的振幅
f=n*fs/N; %® 率序列
subplot(2,2,1),plot(f,mag); %绘出随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');title('N=128');grid on;
subplot(2,2,2),plot(f(1:N⑵,mag(1:N⑵);%绘出Nyquist 频率之前随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');title('N=128');grid on;
以对信号采样数据为1024点的处理
fs=100;N=1024;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,3),plot(f,mag); % 绘出随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');title('N=1024');grid on;
subplot(2,2,4)
plot(f(1:N/2),mag(1:N/2)); % 绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz');
ylabel('振幅');title('N=1024');grid on;
运行结果:
例2: x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t),fs=100Hz, 绘制:
(1) 数据个数N=32 FFT所用的采样点数NFFT=32
(2) N=32 NFFT=128
(3) N=13§ NFFT=128
(4) N=13§ NFFT=512
clf;fs=100; % 采样频率
Ndata=32; %数据长度
N=32; %FFT的数据长度
n=0:Ndata-1;t=n/fs; %数据对应的时间序歹U
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); % 时间域信号
y=fft(x,N); %信号的Fourier 变换
mag=abs(y); %求取振幅
f=(0:N-1)*fs/N; % 真实频率