考虑矩阵:
M = [1.0 2.0 3.0; 5.0 4.0 3.0; 1.0 100.0 12.0]
Run Code Online (Sandbox Code Playgroud)
我想获得每行中最大值的列.所以它应该是:
col = [3; 1; 2]
Run Code Online (Sandbox Code Playgroud)
从那以后
M[1,3] -> 3.0;
M[2,1] -> 5.0;
M[3,2] -> 100.00;
Run Code Online (Sandbox Code Playgroud)
在Octave中很容易实现:
[max, col] = max(M,[],2)
Run Code Online (Sandbox Code Playgroud)
,其中col = [3; 2; 1].
在Julia中,我只能找到findmax返回每行最大元素的绝对索引的函数.所以它会是:
max, aindx = findmax(M,2)
Run Code Online (Sandbox Code Playgroud)
,其中aindx = [7,2,6]
M [7] = 3.0; M [2] = 5.0; M [6] = 100;
哪里可以找到Julia maxivelent for Octave max(M,[],2)?
我目前的解决方法:
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
Run Code Online (Sandbox Code Playgroud)
Julia findmax比Octave更灵活max:您可以一次找到多个维度的最大值.结果,它返回一个线性索引.
正如您所指出的,您可以使用它ind2sub来计算您想要的任何索引.如果您经常使用它,您可能希望将"变通方法"定义为一个函数,以方便使用..juliarc.jl如果您想确保它始终可用,您可以将该功能放入您的功能中.
| 归档时间: |
|
| 查看次数: |
1332 次 |
| 最近记录: |