如何在 Matlab 中检查数组中的所有元素是否为 1 或 -1

how to check if all elements in an array are 1 or -1 in Matlab

我想检查数组中的所有元素是否都是 1 或 -1,如果其中之一仍然是除 1 或 -1 之外的任何值,函数应该继续。我写了这段代码:

while (all(initial_color(:))~=1 || -1 )

THE FUNCTION

end

Initial_color 是数组的名称。 但它无法正常工作,因为我可以看到所有元素都已变为 1 或 -1 但它仍然运行该功能。我是 Matlab 的新手,你能帮我吗? 提前致谢。

您可以使用类似 abs 的函数:

while (all(abs(initial_color(:))==1))

ismember / ismembertol.

测试条件如下:

all( initial_color==1 | initial_color==-1 )

这里创建了两个数组,一个对所有值为 1 的元素都为真,一个对所有值为 -1 的元素都为真。 | 按元素或运算符将这些组合成一个数组。所有元素都必须为真,因此 all.

您还可以使用 unique,其中 returns 唯一值的排序集。这必须是 [-1,1][1][-1]setdiff 然后可以从集合中删除元素 -11,如果结果为空,则没有不同于 1 或 -1 的值:

u = unique(initial_color);
u = setdiff(u,[-1,1]);
result = isempty(u);

注意这里unique实际上是多余的,setdiffreturns也是唯一集。这使得转换成适合您的 while:

的单行线变得更容易一些
isempty(setdiff(initial_color,[-1,1]))

setdiff 方法可能比这两个比较更快,但我还没有测试过。