2012-05-03 13 views
0

我有兩個不同尺寸的向量。爲簡單起見,可以說如何比較兩個具有不同維度的向量來獲取邏輯數組?

A = rand(30, 1); 
B = rand(10, 2); 

基本上,我想這一點:如果A(i,1)<=B(i,1) & A(i,1)>=B(i,2)爲真,則做某事。我試圖用於例如i = size(A)的陳述,很明顯,因爲這兩個維度而存在問題。如果有人知道如何解決這個問題,請告訴我。

+0

你要什麼的行爲,當I = 25例如看到,因爲B(25,1)沒有定義? – Dan

回答

2

你可以做以下

%# find out which array is longer 
lenA = size(A,1); 
lenB = size(B,1); 

minLength = min(lenA,lenB); 

%# do vectorized comparison 
trueOrFales = all(A(1:minLength)<=B(1:minLength,1)) && ... 
    all(A(1:minLength)>=B(1:minLength,2)) 
+0

嗨喬納斯,貝爾爲你提供幫助。再一次,我的A比B大。如果A的大小比B的大小小,我沒有問題。 – Lei

+0

@Lei:如果你知道A總是大於B,那麼你可以寫'minLength = size( B,1);'。無論如何,如果你發現這個答案有幫助,請考慮接受它。 – Jonas

1

你可能想要做這樣的事情

for i = min(size(A), size(B)) 
    if A(i,1)<=B(i,1) & A(i,1)>=B(i,2) 

然後做的東西。

不是很熟悉Matlab,而懶得啓動它;希望能幫助到你。

+0

嗨喬治,謝謝你的幫助。但這隻適用於A的大小小於B的大小。在我的情況下,A的大小大於B – Lei

+0

對不起,但不是'min(A,B)'應該返回他們兩個?此外,我忘記關閉括號最小。當然,你只能比較較小陣列的元素數量...其餘的你需要一個新的繼續做的東西 – George

+0

嗨喬治,我知道這一點。再次感謝你的幫助。事情是,我想比較大尺寸的A和B的小尺寸!我不知道是否有任何方法可以做到這一點。 – Lei