如何使用其他矩阵的列最大值索引矩阵

时间:2015-04-04 11:38:54

标签: matlab matrix

我有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

提前致谢

1 个答案:

答案 0 :(得分: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