计算限制时出错 - 无法从syms转换为逻辑 - MATLAB -2014a

时间:2016-08-09 19:22:12

标签: matlab limit

我想计算log(CR(r))/ log(r)的极限,因为r趋于0。 MATLAB代码如下所示。

function cd = CD(data)    
  syms r 
  cd =  limit(log(CR(r,data))/log(r),r,0) ;
end

function val = hf(xi,xj,r)
    dis = abs(xi-xj);

    if(dis <= r)
        val = 1;
    else
        val = 0 ;
    end
end

    function cr = CR(r,data)
       N = length(data);
      sum = 0;
       for i = 1 : N
        for j = i+1 : N

            sum = sum + hf(data(i),data(j),r);
        end
     end
      cr = sum/(N*(N-1));
end

错误: -
Output Snap

1 个答案:

答案 0 :(得分:0)

好吧,错误信息说明了一切:

您不能在等式检查中使用符号变量。如果dis <= r r没有值,您怎么知道?{/ p>

我有义务这样说:

不要将sum用作变量名!这是一个非常重要且有用的内置函数。你这样做是没用的。

i and j是MATLAB中的错误变量名,因为它们表示虚构单位(sqrt(-1))。

另外,我记得说过:不要使用sum作为变量名称!

PS!您的hf - 函数等同于:

function val = hf(xi,xj,r)
    var = abs(xi-xj) <= r;   % Still doesn't work since r is symbolic
end