一个偶对称的连续波,如何用FFT做频谱分析,用正弦信号做了个例子,不论任何连续信号,都可以仿照这个例子进行频谱分析。
- %==========================================================================
-
%Name: sinfft.m
-
%Desc: 使用FFT求y=sin(2*pi*10*t)的频谱,抽样频率为40hz(大于信号最高频率2倍),
-
% 抽样时间点从-t0~t0;FFT点数分别为32和1024,用来比较不同N点的频谱图变化。
-
% 对每一个N,用两种方式生成抽样值,并分别画图
-
%Parameter:
-
%Return:
-
%Author: yoyoba(stuyou@126.com)
-
%Date: 2011-10-20
-
%Modify: 2011-10-20
-
% %========================================================================
-
fs=40;
-
N=[32,1024];
-
for r=1:2
-
%方式1:(FFT的数据位于主值区间[0,N-1])。由于采样时间从-t0~t0,得到的采样数
-
%据也是从-t0~t0,如何变换到主值区间?注意偶对称序列是如何把采样数据变换到主
-
%值区间的。画频谱图时,注意频率的生成方法,得到的频谱图的横轴频率从负到正。
-
np=floor(0:(N(r)-1)/2);
-
nn=floor(-(N(r)-1)/2:-1/2);
-
n=[np,nn];
-
t=n/fs;
-
y=sin(2*pi*10*t);
-
Y=fftshift(fft(y,N(r)));
-
k=floor(-(N(r)-1)/2:(N(r)-1)/2);
-
f=k*fs/N(r);
-
subplot(2,2,2*r-1);
-
plot(f,abs(Y));
-
title(strcat('figure',num2str(2*r-1),' N=',num2str(N(r))));
-
-
%方式2:采样时间从-t0~t0,得到的采样数据直接作为FFT的数据使用。画频谱图时,
-
%注意频率的生成方法,得到的频谱图的横轴频率从0开始。
-
n=[nn,np];
-
t=n/fs;
-
y=sin(2*pi*10*t);
-
Y=fftshift(fft(y,N(r)));
-
k=0:N(r)-1;
-
f=k*fs/N(r);
-
subplot(2,2,2*r);
-
plot(f,abs(Y));
-
title(strcat('figure',num2str(2*r),' N=',num2str(N(r))));
-
end
阅读(12548) | 评论(0) | 转发(0) |