急求程序错在那里?
第一个程序运行正常:clear;
fs=1000; %fs为采样频率;
N=1000; %采样点数
t=1/fs:1/fs:1;
y1=2*sin(60*pi*t);
y2=5*sin(90*pi*t);
z=y1+y2;
plot(t,z);
imf=emd(z);
emd_visu(z,1:length(z),imf);
%%%%%%%%%%%%%求边际谱
=hhspectrum(imf);
=toimage(A,fa,tt,length(tt));
E=flipud(E);
for k=1:size(E,1)
bjp(k)=sum(E(k,:))*1/fs;
end
f=(1:N-2)/N*fs;
plot(f,bjp);
title('边际谱');
xlabel('频率 / Hz');
ylabel('幅值');
第二个程序就有点问题,出不了边际谱:
fs=2000;
N=535;
t=1/fs:1/fs:(N-1)/fs;
x=(1+0.2*sin(2*pi*7.5*t)).*cos(2*pi*30*t+0.5*sin(2*pi*15*t))+sin(2*pi*120*t);
figure(1);
plot(t,x);
title('模拟振动信号波形')
xlabel('t:s')
ylabel('幅值')
imf=emd(x);
emd_visu(x,1:length(x),imf)
%%%%%%%%%%%%%求边际谱
=hhspectrum(imf);
=toimage(A,fa,tt,length(tt));
E=flipud(E);
for k=1:size(E,1)
bjp(k)=sum(E(k,:))*1/fs;
end
f=(1:N-2)/N*fs;
plot(f,bjp);
title('边际谱');
xlabel('频率 / Hz');
ylabel('幅值');
报错如下:??? Error using ==> plot
Vectors must be the same lengths.
Error in ==> dengyangben3 at 23
plot(f,bjp);
各位前辈是什么意思呢? 看看f 和bjp的长度 关键是第一个程序运行正常啊!两个程序后半部分一模一样的! 本帖最后由 wdhd 于 2016-3-11 13:35 编辑
原帖由 dengbangfei 于 2007-6-6 21:00 发表
关键是第一个程序运行正常啊!两个程序后半部分一模一样的!
两个程序同时放在一个 m 文件中,相继运行?试试第二个程序开头也 clear all 吧。这种错误最好自己调试 第一个程序t=1/fs:1/fs:1; t的长度为1000=fs,等于N
第二个程序t=1/fs:1/fs:(N-1)/fs; t的长度为N-1
回复 #4 eight 的帖子
不是放在同一个文件运行的,是2个不同命名文件,先后运行的! 回5楼,谢谢你,是这样的! 本帖最后由 wdhd 于 2016-3-11 13:35 编辑原帖由 dengbangfei 于 2007-6-6 20:25 发表
第一个程序运行正常:
clear;
fs=1000; %fs为采样频率;
N=1000; %采样点数
t=1/fs:1/fs:1;
y1=2*sin(60*pi*t);
y2=5*sin(90*pi*t);
z=y1+y2;
plot(t,z);
imf=emd(z);
emd_visu(z,1:length(z),i ...
你这样直接用分解后的imf分量求边际谱有些出入吧,其中的imf分量有些是无用的
回复 #8 form 的帖子
对呀,我正觉得得出来的边际谱有问题呢,那该怎么考虑呢,望指教!回复 #9 dengbangfei 的帖子
模拟信号边际谱结果,别人基本上一下就能看出好不好、正确与否。因为本身直接就能知道原信号的imf分量,如你的两个正弦信号。实际数据比较麻烦了,我觉得要去掉一些无关的分量,可能对同一数据每个人结果不同,只要能找到你需要的信息就成。
回复 #10 form 的帖子
实际数据只要采用的方法一样,每个人的结果还是一样的,主要是看想从数据里面的得到什么,然后结合不同的方法,通过不同的途径达到这个目的回复 #1 dengbangfei 的帖子
而且楼主我觉得你这两个正弦信号叠加仅靠你上面的程序是不会很好的分离的。
页:
[1]