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 请看Heaviside函数的定义,及其表达式,看了你就明白了! 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
请赐教!谢谢! 这个是该函数的代码
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,对这两个值进行判断,然后对函数取值! 论坛里的那个算法要自己调试一下才能用的,你要注意你自己输入的行向量还是列向量。sita=heaviside(r,d)这句语法是没有错的可以用,另外你在算关联积分时一定要注意划分的每个子序列点的个数。我自己根据论坛的程序调了一下可以用,我一会传上去。 谢谢两位学长的回复。
求助
请问3QMM啥时候能将调试的传上来呢,我的关联维数计算也是一直出现这个错误调不出来急死人了。
页:
[1]