maxingcellar 发表于 2007-3-10 11:15

急救: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 编辑 ]

eight 发表于 2007-3-10 11:35

原帖由 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

我没有修改过啊,要修改吗,我还以为直接可以用呢

eight 发表于 2007-3-10 11:39

原帖由 maxingcellar 于 2007-3-10 11:38 发表
我没有修改过啊,要修改吗,我还以为直接可以用呢


应该不用修改的

maxingcellar 发表于 2007-3-10 11:41

t : time instants我是把取的1764个点除以总的点数后再乘以时间得出的0.04,不知道这样是不是对的?

eight 发表于 2007-3-10 11:43

原帖由 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)

eight 发表于 2007-3-10 11:45

原帖由 maxingcellar 于 2007-3-10 11:41 发表
t : time instants我是把取的1764个点除以总的点数后再乘以时间得出的0.04,不知道这样是不是对的?


当然不对,t 就是1:1764对应的值,例如 t = 0:0.01:pi(假设一共有1764个点),则把这个 t 作为输入就可以了

maxingcellar 发表于 2007-3-10 12:20

谢谢eight
那正确的t=0:0.01:pi,那步长和PI是根据实际情况对吗

eight 发表于 2007-3-10 13:01

原帖由 maxingcellar 于 2007-3-10 12:20 发表
谢谢eight
那正确的t=0:0.01:pi,那步长和PI是根据实际情况对吗


这个是当然的

maxingcellar 发表于 2007-3-10 17:13

eight,那我不理解这里的t应该取多少?请指教!!!

eight 发表于 2007-3-10 19:43

原帖由 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); 就可以了

maxingcellar 发表于 2007-3-10 20:00

imf = emd(x,t); 但是在新版的EMD里面就没有T这个项啊 
还有步长0.01是固定的吗?谢谢eight

[ 本帖最后由 maxingcellar 于 2007-3-10 20:02 编辑 ]

eight 发表于 2007-3-10 20:05

原帖由 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 编辑 ]

maxingcellar 发表于 2007-3-10 20:16

谢谢eight,十分感谢

maxingcellar 发表于 2007-3-11 19:32

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 编辑 ]
页: [1] 2 3 4
查看完整版本: 急救:EMD_VISU.M的问题