2013-05-21 95 views
-4

假设我们有以下的矢量matlab平等:检查矢量元素

v1=[2 2 2 2 2 2 2] 

v2=[2 2 2 2 3 2 2] 

我们如何检查的每个向量中的所有元素都等于或不?

EDIT(注)

询问两个向量相互比较,但每个矢量内的元件一起。例如,v1具有彼此相等的所有元素,而v2不是。

谢谢。

+5

http://www.mathworks.de/de/help /matlab/ref/isequal.html –

+0

@ j.holetzeck。请参阅我的帖子编辑。我**不是**试图比较两个向量在一起,但向量的元素彼此。谢谢 – Simplicity

+0

你是否考虑过所有元素都是NaN的情况? – Shai

回答

2
length(unique(v1)) == 1 

>> 1 

length(unique(v2)) == 1 

>> 0 

要在这个例子中排除了一些,我不希望在这里包括,例如0:

v3=[2 2 2 2 2 2 2 0] 
length(unique(v3(v3 ~= 0))) == 1 
>> 1 
+0

感谢您的回复。当我想使用你建议的命令时,有没有办法在这里包含一个我不想包含的数字?比如说,我不想在这里包含'0',我该怎么办? – Simplicity

+0

当然,我更新了答案。 –

+0

@FranckDernoncourt'unique'在这里有点矫枉过正,不是吗? :) –

0

您可以比较元素方面是这样的:

v1 == v2 

返回

[ 1 1 1 1 1 1 1 ] 

然后使用all函数返回true如果所有元素都为真:

all(v1 == v2) 
+0

这不是关于比较两个向量。我的意思是比较每个向量的元素。谢谢 – Simplicity

+1

我想这就是为什么总是在问题中显示所需输出更好的原因。 –

2

你可以检查vector中的所有元素是否都是相同的做

>> all(v1 == v1(1)) 

ans = 

    1 

>> all(v2 == v2(1)) 

ans = 

    0 
+0

感谢您的回复。当我想使用你建议的命令时,有没有办法在这里包含一个我不想包含的数字?比如说,我不想在这里包含'0',我该怎么办? – Simplicity