如何在 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
然后可以从集合中删除元素 -1
和 1
,如果结果为空,则没有不同于 1 或 -1 的值:
u = unique(initial_color);
u = setdiff(u,[-1,1]);
result = isempty(u);
注意这里unique
实际上是多余的,setdiff
returns也是唯一集。这使得转换成适合您的 while
:
的单行线变得更容易一些
isempty(setdiff(initial_color,[-1,1]))
setdiff
方法可能比这两个比较更快,但我还没有测试过。
我想检查数组中的所有元素是否都是 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
然后可以从集合中删除元素 -1
和 1
,如果结果为空,则没有不同于 1 或 -1 的值:
u = unique(initial_color);
u = setdiff(u,[-1,1]);
result = isempty(u);
注意这里unique
实际上是多余的,setdiff
returns也是唯一集。这使得转换成适合您的 while
:
isempty(setdiff(initial_color,[-1,1]))
setdiff
方法可能比这两个比较更快,但我还没有测试过。