|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
刚学着用matlab的fft函数时,遇到一些问题:变换结果向量对应的频率向量是什么?画频谱图时如何手动规定显示频率范围?等。如是乎自定义了一个自己方便用的myfft函数:
% myfft my fft program based on matlab's fft
% [X,f]=myfft(fs,x,fmax,p)
% inputs: fs:sampling frequency
% x:analysed signal(vector)
% fmax:maximum frequency for display
% p:plot or not
% outputs: X:fft result(vector)
% f:frequencies of X's elements(vector)
function [X,f]=myfft(fs,x,fmax,p)
if nargin==2
fmax=fs/2;
p='noplot';
end
if nargin==3
p='noplot';
end
X=[];
f=[];
n=length(x);
t=[0:n-1].*(1/fs);
X=2*fft(x)/n;
X=X(1:ceil(fmax*n/fs));
f=linspace(0,fmax,ceil(fmax*n/fs));
if strcmp(p,'plot')
subplot(2,1,1);
plot(t,x,'k');
set(gca,'Xlim',[0 t(end)]);
title('Signal');
xlabel('t(s)');
ylabel('amp');
subplot(2,1,2);
plot(f,abs(X),'k');
set(gca,'Xlim',[0 f(end)]);
title('Spectrum');
xlabel('f(Hz)');
ylabel('amp');
end
调试程序如下:
fs=100;
t=0:1/fs:5;
x=5*sin(2*pi*10*t+pi/3);
figure(1);
[X,f]=myfft(fs,x,fs/2,'plot');
[ 本帖最后由 eight 于 2007-12-20 19:19 编辑 ] |
评分
-
1
查看全部评分
-
|