矩阵中每一行的最大值列
Column of the max for each row in a matrix
考虑矩阵:
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
函数,其中 returns 是每行最大元素的绝对索引。
所以它会是:
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 等价物?
我目前的解决方法:
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
Julia 的 findmax
比 Octave 的 max
更灵活:您可以一次找到多个维度的最大值。因此,它 returns 是一个线性索引。
正如您所指出的,您可以使用 ind2sub
来计算您想要的任何索引。如果你经常使用它,你可能想将你的 "workaround" 定义为一个函数以方便使用。如果您想确保它始终可用,您可以将该功能放在 .juliarc.jl
中。
考虑矩阵:
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
函数,其中 returns 是每行最大元素的绝对索引。
所以它会是:
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 等价物?
我目前的解决方法:
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
Julia 的 findmax
比 Octave 的 max
更灵活:您可以一次找到多个维度的最大值。因此,它 returns 是一个线性索引。
正如您所指出的,您可以使用 ind2sub
来计算您想要的任何索引。如果你经常使用它,你可能想将你的 "workaround" 定义为一个函数以方便使用。如果您想确保它始终可用,您可以将该功能放在 .juliarc.jl
中。