声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 7418|回复: 50

[HHT] 急救:EMD_VISU.M的问题

[复制链接]
发表于 2007-3-10 11:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我输入 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([t(1) t(s(2)) mx Mx])
请Eight等各位高手帮帮忙,谢谢了

[ 本帖最后由 zhlong 于 2007-6-4 17:39 编辑 ]
回复
分享到:

使用道具 举报

发表于 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的程序,所以帮不到你,抱歉
 楼主| 发表于 2007-3-10 11:38 | 显示全部楼层
我没有修改过啊,要修改吗,我还以为直接可以用呢
发表于 2007-3-10 11:39 | 显示全部楼层
原帖由 maxingcellar 于 2007-3-10 11:38 发表
我没有修改过啊,要修改吗,我还以为直接可以用呢



应该不用修改的
 楼主| 发表于 2007-3-10 11:41 | 显示全部楼层
t : time instants  我是把取的1764个点除以总的点数后再乘以时间得出的0.04,不知道这样是不是对的?
发表于 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的第二维)必须一致,调用格式为:

  1. emd_visu(x,t,imf,1)
复制代码
发表于 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 作为输入就可以了
 楼主| 发表于 2007-3-10 12:20 | 显示全部楼层
谢谢eight
那正确的t=0:0.01:pi,那步长和PI是根据实际情况对吗
发表于 2007-3-10 13:01 | 显示全部楼层
原帖由 maxingcellar 于 2007-3-10 12:20 发表
谢谢eight
那正确的t=0:0.01:pi,那步长和PI是根据实际情况对吗



这个是当然的
 楼主| 发表于 2007-3-10 17:13 | 显示全部楼层
eight,那我不理解这里的t应该取多少?请指教!!!
发表于 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); 就可以了
 楼主| 发表于 2007-3-10 20:00 | 显示全部楼层
imf = emd(x,t); 但是在新版的EMD里面就没有T这个项啊 
还有步长0.01是固定的吗?谢谢eight

[ 本帖最后由 maxingcellar 于 2007-3-10 20:02 编辑 ]
发表于 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: [0.05,0.5,0.05]
%                        - 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 编辑 ]
 楼主| 发表于 2007-3-10 20:16 | 显示全部楼层
谢谢eight,十分感谢
 楼主| 发表于 2007-3-11 19:32 | 显示全部楼层
eghit 我运行程序,一下子出了三张图 而且都没有座标轴,
>> x=wavread('a7501.wav');
>> x=x(1:1764);
>> [imf] = emd(x);
>> t = 1:1764;
>> varargout = emd_visu(x,t,imf);
看看有什么错?是单通道的声音信号,频率为44100HZ,

[ 本帖最后由 maxingcellar 于 2007-3-11 19:35 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-2 22:24 , Processed in 0.153057 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表