clock057 发表于 2008-3-7 09:45

G-P算法中heaviside函数求教

调用G-P算法时,
function C_I=correlation_integral(X,M,r)子程序中:
sita=heaviside(r,d);语句老是出错。

搜索一下帮助里,heaviside函数应该只有一个输入变量。heaviside(x),x与0相比,x大于0结果为1,x小于0结果为0。

请问是sita=heaviside(r,d);语句是不是比较r和d的大小: r>d,sita=1;r<d,sita=0?

小弟刚上路,请大侠指教。

下面是论坛中G—P算法中的correlation_integral子程序:

function C_I=correlation_integral(X,M,r)
sum_H=0;
for i=1:M
%   fprintf('%d/%d\n',i,M);
    for j=i+1:M
      d=norm((X(:,i)-X(:,j)),inf);%calculat the distances of each two points in matris M with sup-norm
      sita=heaviside(r,d);%calculate the value of the heaviside function
      sum_H=sum_H+sita;
    end
end
C_I=2*sum_H/(M*(M-1));%the value of correlation integral

octopussheng 发表于 2008-3-7 10:41

请看Heaviside函数的定义,及其表达式,看了你就明白了!

clock057 发表于 2008-3-10 16:20

heaviside函数的定义我也知道,但每次调用correlation_integral子程序时,heaviside函数都会出错:

??? Error using ==> heaviside
Too many input arguments.
Error in ==> correlation_integral at 15
      sita=heaviside(r,d);%calculate the value of the heaviside function


提示heaviside函数的输入参数过多。并且matlab_help中heaviside函数的调用格式也是单输入:heaviside(x)。

请问是不是为了版权故意写成这样的,用的时候要自己修改一下呀!:@L

请赐教!谢谢!

octopussheng 发表于 2008-3-11 21:20

这个是该函数的代码
function sita=heaviside(r,d)
%the function is used to calculate the value of the Heaviside function
%sita:the value of the Heaviside function
%r:the radius in the Heaviside function,sigma/2<r<2sigma
%d:the distance of two points
%skyhawk
if (r-d)<0
    sita=0;
else sita=1;
end

其意义是给定两个值,r和d,对这两个值进行判断,然后对函数取值!

3QMM 发表于 2008-3-11 21:29

论坛里的那个算法要自己调试一下才能用的,你要注意你自己输入的行向量还是列向量。sita=heaviside(r,d)这句语法是没有错的可以用,另外你在算关联积分时一定要注意划分的每个子序列点的个数。我自己根据论坛的程序调了一下可以用,我一会传上去。

clock057 发表于 2008-3-16 09:50

谢谢两位学长的回复。

leeting918 发表于 2010-4-13 15:25

求助

请问3QMM啥时候能将调试的传上来呢,我的关联维数计算也是一直出现这个错误调不出来急死人了。
页: [1]
查看完整版本: G-P算法中heaviside函数求教