如何在matlab中检查数组中的所有元素是否相同?

zeb*_*bra 34 matlab

必须有一个简单的matlab方法来做到这一点.我有一个行向量,我想检查所有元素是否相等.在循环中强制执行此操作很容易,但是寻找更有效的方法:)元素是整数

Ben*_*igt 48

我认为它可以如此简单

if all(v == v(1))
Run Code Online (Sandbox Code Playgroud)

另一种方法是

if range(v) == 0
Run Code Online (Sandbox Code Playgroud)

  • @reve_etrange - 因为你误解了这个问题.isequal测试以查看两个数组是否相同.请按要求重新阅读问题.它询问SINGLE数组的所有元素是否彼此相等. (7认同)
  • 请注意,这两种方法仅适用于一维数组(如所请求的问题).要修改它以适用于任何大小的数组,只需调用`if all(v(:)== v(1))`. (6认同)
  • 还值得注意的是,两种建议的方法将为包含NaN值的数组提供不同的结果>> all([3 NaN 3] == 3)ans = 0 >> range([3 NaN 3])== 0 ans = 1 (6认同)
  • @Giuseppe:“all”只需要检查,直到找到第一个错误的情况。反转测试没有任何优势。 (3认同)

And*_*ein 6

另一种方案:

numel(unique(v))==1
Run Code Online (Sandbox Code Playgroud)

  • +1:此答案也适用于空v。 (2认同)

小智 5

如何:max(v) == min(v)?:-)

  • @ m7913d我检查了它。这个答案和前一个一样快。 (2认同)