2015-04-04 166 views
2

我有2個矩陣AB如何使用其他矩陣的列最大值對矩陣進行索引

我在A列中找到最大值,並將它們的索引保持爲I.到目前爲止這麼好。 現在,我需要選擇與存儲在I中的索引相同的B數組。我不知道如何執行此操作。 見下圖:

A = [1,2,3; 0,8,9] 
B = [0,1,2; 4,2,3] 
[~,I] = max(A) 
h = B(I) 

我需要的B這些值:

h = [0 2 3] 

但在一個不同的代碼的結果。我該如何解決它?

A = 

1  2  3 
0  8  9 


B = 

0  1  2 
4  2  3 


I = 

1  2  2 


h = 

0  4  4 

預先感謝

回答

2

max功能如何使用它的工作原理是

如果A是一個矩陣,則max(A)是包含各列的最大值的行向量。

因此M = max(A)相當於M = max(A,[],1)。但是,如果你不確定,請使用第三個輸入。

如果使用max找到最大值在列矩陣的,則返回行索引專欄索引適合您的情況只需1:size(A,2) = [1 2 3]

現在,你需要你的行和列索引轉換爲線性指數與sub2ind

%// data 
A = [1,2,3; 0,8,9] 
B = [0,1,2; 4,2,3] 

%// find maxima of each column in A 
[~, I] = max(A, [], 1) %// returns row indices 

%// get linear indices for both, row indices and column indices 
I = sub2ind(size(A), I, 1:size(A,2)) 

%// index B 
h = B(I) 

回報:

h = 

    0  2  3 
+0

太棒了!非常感謝。它很好地解決了這個問題。 – Farid 2015-04-04 14:17:17