我如何才能声明/分配一个以前从未分配过的变量?
上下文:
我试图找到最小化 k 的函数 calculateSomeDistance(k) 的 k。最小距离和相应的 k 值应该可用(即在范围内)以供以后使用。 我应该如何声明 minDistance 以便在将它与当前计算的距离进行比较之前检查它是否已经初始化?
% How should I declare minDistance?
minDistance=undefined; % Doesn't exist.
for ki=1:K,
distance=calculateSomeDistance(ki);
if(isUndefined(minDistance) || distance < minDistance)
minDistance = distance;
minK = ki;
end
end
% Here minK and minDistance must be in scope
有没有办法在 matlab/octave 中为变量分配空值/未定义值,然后对其进行测试以进行第一个有效分配?
附言: 将 minDistance 初始化为一个非常大的数字非常难看,这不是我想要的。
当 ki 为 1 时(即第一次通过时)初始化 minDistance 是可以的,但仍然不是很好。
最佳答案
您可以使用 exist 检查变量是否存在:
if ~exist('minDistance','var')
minDistance = initValue;
end
如果您想让变量存在于工作区中,但处于未定义状态,您可以分配 nan
(不是数字)并使用 isnan
进行检查.这类似于您提出的解决方案,其值类型明确不会与变量的任何有效值冲突。
关于Matlab:如果未定义则初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11798370/