- 积分
- 15673
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-3-12
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
%spec_FFT.m : Computes the power spectrum of a 1-D data vector.
% a = 1-D data vector (must be integer power of 2)
% wn = Window size (e.g. 1024)
% usage: y=spec_FFT(a,wn);
function [E]=spec_FFT(a,wn)
%wn=size of window;
ntemp=length(a);
n=ntemp(1);
numw=n/wn; %number of windows in file
t=[1:wn];
%create sin^2 window for tapering first and last 10% of each window
N=wn;
N1=round(0*N);
N2=round(1*N);
t1=[1:N1];
t2=[N1+1:N2];
t3=[N2+1:N];
W=zeros(1,N);
W(1:N1)=(sin(5*pi*t1./N)).^2;
W(N1+1:N2)=1;
W(N2+1:N)=(sin(5*pi*t3./N)).^2;
i=1;
E=zeros(wn/2,1);
while i <= numw
%grab a window of data
first=(i-1)*wn+1;
last=i*wn;
awin=a(first:last);
%fit straight line to data
p=polyfit(t,awin',1);
y=polyval(p,t);
%detrend
awin=awin-y';
%taper edges
awin=awin.*W';
%Take FFT
f=fft(awin,wn)./wn;
Ew=conj(f).*f;
Ew2=Ew(2:wn/2+1);
E=E+Ew2;
i=i+1;
end
i=i-1
E=E./i;
这是网上下的程序,红色的两行不太懂,假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。为什么只除以wn呢?还有最后一行为什么还要除以i?该功率谱的频率是哪个?是自己用f=n·fs/N这样的式子算吗?N为数据点数,fs为采样频率,n=0:N-1;
|
|