我有2个矩阵A
和B
。
我在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
提前致谢
答案 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