WJzhengdong 发表于 2010-11-17 15:06

emd_visu显示的问题?

function varargout = emd_visu(x,t,imf,i);

if sum(size(t)>1)>1
imf = t;
t =1:length(x);
if(nargin==3)
    fignum = i;
end
else
if(nargin==4)
    fignum = i;
end
end
这是这个函数开头一部分,不明白为什么第二行出现
imf = t;
t =1:length(x);
函数输入里第一个X是原信号,第二个t表示时间啊有的程序也直接写成1:length(x);
,第三个是emd的imf才对,为什么显示程序开头把t付给了imf,
是我下的程序有问题还是怎么回事?

hivdg 发表于 2010-11-18 19:11

if sum(size(t)>1)>1
如果为真,说明函数的第二个参数是矩阵,如果是矩阵的话,说明使用函数的人第二个参数输入的不是时间参数而是IMF这个参数,缺省输入了时间参数,所以才会有后面的
t =1:length(x);
if(nargin==3)
    fignum = i;
end
好好看看matlab可变输入输出参数的函数吧

WJzhengdong 发表于 2010-11-19 21:36

是这么回事,当时好像理解错误了,imf至少都是2维的,而时间函数却始终是一维的,所以size(t)>1时间矩阵式不满足的。只有imf会满足

hitdely 发表于 2010-12-7 08:51

回复 1 # WJzhengdong 的帖子

你好,请 if(nargin==4)这个是干什么的啊?你是用HHT做什么的啊 可以交流一下吗 谢谢
                  fignum = i;

WJzhengdong 发表于 2010-12-7 09:17

if 括号里表示输入参数为4个时,i是第四个,就把i付给fignum。它是确定显示图像个数的

aishuishou 发表于 2011-3-30 21:57

回复 5 # WJzhengdong 的帖子

为什么确定图像个数?那不常用的第四个图像做什么的?

小莉 发表于 2012-4-12 10:09

回复 6 # aishuishou 的帖子

页: [1]
查看完整版本: emd_visu显示的问题?