MATLAB中FFT的使用方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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; % 真实频率

相关文档
最新文档