Matlab:如果未定义则初始化变量

标签 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 中为变量分配空值/未定义值,然后对其进行测试以进行第一个有效分配?

附言: 将 minDistance 初始化为一个非常大的数字非常难看,这不是我想要的。

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

最佳答案

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

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

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

关于Matlab:如果未定义则初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11798370/

相关文章:

用于 MATLAB 的 Java JPA 类

matlab - 如何以 Matlab eps 格式导出变音符号(或任何外来字符)?

matlab - 访问带有向量索引的矩阵

matlab - 如何在MATLAB中构造两个粒子相对于时间的布朗轨迹?

php - 为什么我得到这个?使用未定义的常量连接——假定为 'connection'

javascript - 检测 'undefined' 被覆盖位置的可能方法?

c - 错误未定义对 'WinMain@16' 的引用

matlab - 在matlab中平均每n个向量的元素

javascript - Fullcalendar dayRender 未定义单元格属性

php mysql 未定义索引