马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 hmjerry 于 2011-3-16 15:04 编辑
大家好,看论坛里都是做信号处理的,我是跨专业,没接触过信号处理,现在想用EMD方法做周期分析,因为用的是气象资料,无法给出采样频率,现在已经得到了IMF图,想求出各个IMF中的周期,请问该如何编程?
请大家帮帮忙!
谢谢各位!
数据、代码和结果如下
11.txt
(228 Bytes, 下载次数: 19)
- clear
- z=[textread('D:\11.txt')]
- t=1982:1:2009;
- x=[1982:2:2010]
- c=emd(z); % EMD 分解
- [m,n]=size(c);
- for i=1:m-1
- %--------------------------------------------------------------------
- %计算各IMF的方差贡献率
- %定义:方差为平方的均值减去均值的平方
- %均值的平方
- %imfp2=mean(c(i,:),2).^2
- %平方的均值
- %imf2p=mean(c(i,:).^2,2)
- %各个IMF的方差
- mse(i)=mean(c(i,:).^2,2)-mean(c(i,:),2).^2;
- end;
- for i=1:m-1
- mse(i)=mean(c(i,:).^2,2)-mean(c(i,:),2).^2;
- %方差百分比,也就是方差贡献率
- mseb(i)=mse(i)/sum(mse)*100;
- %显示各个IMF的方差和贡献率
- end;
- figure(1)
- for i=1:m-1
- disp(['imf',int2str(i)]) ;disp([mse(i) mseb(i)]);
- end;
- subplot(m+1,1,1)
- plot(t,z)
- set(gca,'fontname','times New Roman')
- set(gca,'fontsize',12.0)
- set(gca,'xtick',x);
- ylabel(['signal'])
- for i=1:m-1
- subplot(m+1,1,i+1);
- set(gcf,'color','w')
- plot(t,c(i,:),'k')
- set(gca,'fontname','times New Roman')
- set(gca,'fontsize',12.0)
- set(gca,'xtick',x);
- ylabel(['imf',int2str(i)])
- end
- subplot(m+1,1,m+1);
- set(gcf,'color','w')
- plot(t,c(m,:),'k')
- set(gca,'fontname','times New Roman')
- set(gca,'fontsize',12.0)
- set(gca,'xtick',x);
- ylabel(['r',int2str(m-1)])
- xlabel('Time')
复制代码
|