2013-05-21 94 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