矩阵中每行的最大值列

时间:2015-07-30 16:48:43

标签: julia

考虑矩阵:

M = [1.0 2.0 3.0; 5.0 4.0 3.0; 1.0 100.0 12.0]

我想获得每行中最大值的列。 所以它应该是:

col = [3; 1; 2] 

,因为

M[1,3] -> 3.0;
M[2,1] -> 5.0;
M[3,2] -> 100.00;

在Octave中很容易实现:

[max, col] = max(M,[],2)

,其中col = [3; 2; 1]。

在Julia中,我只能找到findmax函数,它返回每行最大元素的绝对索引。 所以它会是:

max, aindx = findmax(M,2)

,其中aindx = [7,2,6]

M [7] = 3.0; M [2] = 5.0; M [6] = 100;

哪里可以找到Octave max(M,[],2)的Julia equivelent?

我目前的解决方法:

max, aindx = findmax(M, 2);
msize=size(M);
col = zeros(msize[1], 1);
for i=1:msize[1] 
  _, col[i] = ind2sub(msize,aindx[i]);
end

1 个答案:

答案 0 :(得分:5)

Julia的findmax比Octave的max更灵活:您可以一次找到多个维度的最大值。因此,它返回一个线性索引。

正如您所指出的,您可以使用ind2sub来计算您想要的任何索引。如果您经常使用它,您可能希望将“变通方法”定义为一个函数,以方便使用。如果你想确保它始终可用,你可以将该功能放在.juliarc.jl中。