急救:EMD_VISU.M的问题
我输入 varargout = emd_visu(x,0.04,imf(1,:),1);和 varargout = emd_visu(x,0.04,imf,1);都显示出错误如下:??? Attempted to access t(1764); index out of bounds because numel(t)=1.
Error in ==> emd_visu at 48
axis()
请Eight等各位高手帮帮忙,谢谢了
[ 本帖最后由 zhlong 于 2007-6-4 17:39 编辑 ] 原帖由 maxingcellar 于 2007-3-10 11:15 发表
我输入 varargout = emd_visu(x,0.04,imf(1,:),1);和 varargout = emd_visu(x,0.04,imf,1);都显示出错误如下:
??? Attempted to access t(1764); index out of bounds because numel(t)=1.
Error in ==> ...
估计t(s(2))那里越界了,你调试一下吧。emd_visu函数你有没有修改过?我这台新机没有关于EMD的程序,所以帮不到你,抱歉 我没有修改过啊,要修改吗,我还以为直接可以用呢 原帖由 maxingcellar 于 2007-3-10 11:38 发表
我没有修改过啊,要修改吗,我还以为直接可以用呢
应该不用修改的 t : time instants我是把取的1764个点除以总的点数后再乘以时间得出的0.04,不知道这样是不是对的? 原帖由 maxingcellar 于 2007-3-10 11:15 发表
我输入 varargout = emd_visu(x,0.04,imf(1,:),1);和 varargout = emd_visu(x,0.04,imf,1);都显示出错误如下:
??? Attempted to access t(1764); index out of bounds because numel(t)=1.
Error in ==> ...
刚上flandrin网站看了一下,你要看清楚 emd_visu 的输入参数,第二个是时间t,与各imf的长度(参数imf的第二维)必须一致,调用格式为:
emd_visu(x,t,imf,1)
原帖由 maxingcellar 于 2007-3-10 11:41 发表
t : time instants我是把取的1764个点除以总的点数后再乘以时间得出的0.04,不知道这样是不是对的?
当然不对,t 就是1:1764对应的值,例如 t = 0:0.01:pi(假设一共有1764个点),则把这个 t 作为输入就可以了 谢谢eight
那正确的t=0:0.01:pi,那步长和PI是根据实际情况对吗 原帖由 maxingcellar 于 2007-3-10 12:20 发表
谢谢eight
那正确的t=0:0.01:pi,那步长和PI是根据实际情况对吗
这个是当然的 eight,那我不理解这里的t应该取多少?请指教!!! 原帖由 maxingcellar 于 2007-3-10 17:13 发表
eight,那我不理解这里的t应该取多少?请指教!!!
根据你要处理的信号来选取,例如:
N = 1024;
t = 1:0.01:N;
w1 = 5/4;
w2 = 1/3;
x = cos(w1*pi*t) + cos(w2*pi*t);
则求得各IMF(调用 imf = emd(x,t); )后,直接调用 emd_visu(x,t,imf); 就可以了 imf = emd(x,t); 但是在新版的EMD里面就没有T这个项啊
还有步长0.01是固定的吗?谢谢eight
[ 本帖最后由 maxingcellar 于 2007-3-10 20:02 编辑 ] 原帖由 maxingcellar 于 2007-3-10 20:00 发表
imf = emd(x,t); 但是在新版的EMD里面就没有T这个项啊
还有步长0.01是固定的吗?谢谢eight
% inputs:
% - x: analysed signal (line vector)
% - opts (optional): struct object with (optional) fields:
% - t: sampling times (line vector) (default: 1:length(x))
% - stop: threshold, threshold2 and tolerance (optional)
% for sifting stopping criterion
% default:
% - display: if equals to 1 shows sifting steps with pause
% if equals to 2 shows sifting steps without pause (movie style)
% - maxiterations: maximum number of sifting steps for the computation of each mode
% - fix (int): disable the stopping criterion and do exactly
% the value of the field number of sifting steps for each mode
% - maxmodes: maximum number of imfs extracted
% - interp: interpolation scheme: 'linear', 'cubic' or 'spline' (default)
% - fix_h (int): do <fix_h> sifting iterations with |#zeros-#extrema|<=1 to stop
% according to N. E. Huang et al., "A confidence limit for the Empirical Mode
% Decomposition and Hilbert spectral analysis",
% Proc. Royal Soc. London A, Vol. 459, pp. 2317-2345, 2003
% - mask: masking signal used to improve the decomposition
% according to R. Deering and J. F. Kaiser, "The use of a masking signal to
% improve empirical mode decomposition",
% ICASSP 2005
可选参数而已,你用emd(x,'t',t);一定没有问题的。步长当然不是固定,根据你的需要,你完全可以使用自己的数据,也可以使用dat文件读入
[ 本帖最后由 eight 于 2007-3-10 20:07 编辑 ] 谢谢eight,十分感谢 eghit 我运行程序,一下子出了三张图 而且都没有座标轴,
>> x=wavread('a7501.wav');
>> x=x(1:1764);
>> = emd(x);
>> t = 1:1764;
>> varargout = emd_visu(x,t,imf);
看看有什么错?是单通道的声音信号,频率为44100HZ,
[ 本帖最后由 maxingcellar 于 2007-3-11 19:35 编辑 ]