2015-04-04 117 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