Matlab:初始变量,如果未定义

时间:2012-08-03 15:08:10

标签: matlab undefined

如果之前从未分配变量,我怎样才能声明/赋值变量?

上下文:

我正在尝试找到最小化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中为变量赋值null / undefined值,然后为了进行第一次有效赋值而对其进行测试?

PS: 将minDistance初始化为非常大的数字是非常难看的,而不是我正在寻找的。

当ki为1(即第一次通过时)初始化minDistance是可以的,但仍然不好。

1 个答案:

答案 0 :(得分:10)

您可以使用exist检查变量是否存在:

if ~exist('minDistance','var')
    minDistance = initValue;
end

如果您希望变量存在于工作空间中,但处于未定义状态,则可以指定nan(不是数字)并使用isnan进行检查。这与您提出的解决方案类似,其值类型明确不会与变量的任何有效值冲突。