2016-01-15 59 views
2

我不認爲我問的是正確的問題,所以這個例子會讓你更容易理解我的意思。從相應的最大矩陣中挑選值

可以說我有2點矩陣

A = [5,5; 7,7]; 
B = [2,2; 6,4]; 

另有2個矩陣,每一個對應與上述中的一個。 比方說

A' = [7,7; 9,9]; 
B' = [1,1; 10,5]; 

,我需要建立一個新的Matrix,將檢查A中的每個像素「和B」,挑最大,然後去相應的矩陣,並從那裏提取價值。

在這個例子中,我會得到這個newMat

newMat = [5,5; 6,7]; 

這是很容易與循環做,有沒有辦法用循環做出來的呢? 在此先感謝!

+0

你有什麼期望發生的時候'Aprime(K)== Bprime(K)'? – Suever

+0

從何處獲取價值無關緊要。它可能來自A或B. –

回答

3

您可以創建其中Aprime超過Bprime邏輯矩陣,然後可用於從任一AB

aprime_is_greater = Aprime > Bprime; 

% Initialize C to B and replace values where Aprime was greater 
C = B; 
C(aprime_is_greater) = A(aprime_is_greater); 
+0

聰明! :) 謝謝! –

+0

將其更新爲可能效率稍高的版本。 – Suever

2

搶值這裏的另一種方法。讓你的輸入是

A = [5,5; 7,7]; 
B = [2,2; 6,4]; 
Aprime = [7,7; 9,9]; 
Bprime = [1,1; 10,5]; 

然後

newMAt = (Aprime>Bprime).*A + (Aprime<=Bprime).*B; 
+0

我想你的意思是 newMAt =(Aprime> Bprime)。* A +(Aprime <= Bprime)。* B; 也可以。一條代碼很棒。 –

+0

@TonyTannous哎呀。更正 –