爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3791|回复: 0

[讨论] 求教:matlab的傅里叶变换

[复制链接]

新浪微博达人勋

发表于 2015-4-29 16:30:49 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

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;
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表