请教一段HHT程序,请高手现身多多指教
请大家帮我看一下这个程序哪里出了问题,小弟在此先谢过了N=1024;
fs=1000000;
t=1:N/fs:N
IMF=emd(z); %对输入信号进行EMD分解,并显示出筛分的过程
%h=hilbert(imf(1,:));
= size(IMF);
for i = 1:m
imf(i) = IMF(i,:);
y(i)=abs(fft(imf(i)));
N=length(z);
f=fs/N*(0:N-1);
figure(i);
plot(f,y(i));
ylabel('幅值');
xlabel('频率');
title('imf(i)信号幅值谱');
end
为什么提示错误
??? plot(f,y(i));
|
Error: Missing variable or function.
我是matlab菜鸟,答辩在即,求帮助啊 你的Z函数表达式没有写,在IMF=emd(z)前加上Z函数表达式。
用emd_visu函数来显示你的IMF结果。 回复 2 # gongludehuxi 的帖子
我采集的是超声波信号啊,没有信号的表达式呢 回复 3 # 南宫轩宇 的帖子
没有表达式,那你得先把你采集的信号装载或者打开。赋值给你的变量Z。 回复 4 # gongludehuxi 的帖子
对啊,我是用load data file这个按钮导入数据的啊,我这个程序的问题不在于数据吧,而是一些语句的错误,我真的对matlab知之甚少,帮我看看程序本身的可执行性吧谢谢 回复 5 # 南宫轩宇 的帖子
N=1024;
fs=1000000;
t=1:N/fs:N
%先在此装载数据
L=length(z)
IMF=emd(z); %对输入信号进行EMD分解,并显示出筛分的过程
emd_visu(z,1:L,IMF) 回复 6 # gongludehuxi 的帖子
大哥提示的还是那个错误啊{:3_50:} 回复 7 # 南宫轩宇 的帖子
首先确保你的数据读取,赋值正确。
其次看你所编的程序文件是否和emd.m,emd_visu.m在同一目录下
如果以上都做了,问题有可能还是处在数据读取上。
他提示的是没有变量或者函数。 回复 8 # gongludehuxi 的帖子
数据读取肯定没问题,因为我已经读取过数据做其他分析了,就是
??? plot(f,y(i));
|
Error: Missing variable or function.
我觉得是y(i)这个循环的问题,不知道怎么修改 回复 9 # 南宫轩宇 的帖子
N=1024;
fs=10000;
t=1:N/fs:N;
z=sin(2*pi*t)+sin(2*pi*10*t);
IMF=emd(z); %对输入信号进行EMD分解,并显示出筛分的过程
%h=hilbert(imf(1,:));
= size(IMF);
y=zeros(m,n);
for i = 1:m
y(i,:)=abs(fft(IMF(i,:)));
N=length(z);
f=fs/N*(0:N-1);
figure(i);
plot(f,y(i,:))
ylabel('幅值');
xlabel('频率');
title('imf(i)信号幅值谱');
end
这回对了,参考这个,将z信号改成你所输入的信号即可 回复 7 # 南宫轩宇 的帖子
把你错误提示贴出。
页:
[1]