【发布时间】:2012-08-03 23:22:36
【问题描述】:
如何声明/分配一个变量,除非它以前从未分配过?
上下文:
我正在尝试找到使 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 中为变量分配一个空值/未定义值,然后对其进行测试以进行第一次有效分配?
PS: 将 minDistance 初始化为一个非常大的数字非常难看,而不是我想要的。
当 ki 为 1(即第一次通过)时初始化 minDistance 是可以的,但仍然不好。
【问题讨论】:
-
我会在答案中选择
nan/isnan()路线,而不是exist()