计算限制时出错 - 无法从符号转换为逻辑 - MATLAB -2014a
Error while calculating limit - Conversion to logic from syms is not possible - MATLAB -2014a
我想计算 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
错误:-
好吧,错误消息确实说明了一切:
不能在相等性检查中使用符号变量。当 r
没有值时,您如何知道 dis <= r
是否存在?
我不得不这样说:
不要使用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
我想计算 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
错误:-
好吧,错误消息确实说明了一切:
不能在相等性检查中使用符号变量。当 r
没有值时,您如何知道 dis <= r
是否存在?
我不得不这样说:
不要使用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