Returning a minimum index in an array in Julia
我正在将一些代码从Matlab转换为Julia。 在matlab代码中:
1
| [~,pStar ] = min(min([dPlus,dMinus ], [], 2)) |
将返回每行中的最小元素并以列形式输出,然后返回列中最小元素的索引(行),如:
1 2 3 4 5 6 7 8 9 10 11 12
| >> M = [1, 1, 1; 1, 1, 0; 1, 1, 1]
M =
1 1 1
1 1 0
1 1 1
>> min(M, [], 2)
ans =
1
0
1
>> [~,row ] = min(min(M, [], 2))
row = 2 |
我的问题是:朱莉娅相当于什么? 谢谢
indmin返回最小值的线性索引。 您可以使用ind2sub将其转换为下标表单,并从中提取行:
1 2 3 4 5 6 7 8
| julia> indmin (M )
8
julia> row, col = ind2sub(M, indmin (M ))
(2, 3)
julia> row
2 |
这种方法避免了迭代两次并创建了一个中间数组。
更新:在Julia> = 0.7,这已更改为argmin,返回CartesianIndex,您可以直接使用。 您还可以使用findmin来获取最小值及其索引。
-
很高兴我能帮助你。 请阅读这个; 如果你找到了一个能够令人满意地解决问题的答案,你可以用一个复选标记将其标记为"已接受"。
-
当然,我得到了"无效理解"错误。 我真的需要你看看其余的代码。 朱莉娅的调试是如此模糊,我没有丝毫的线索可能来自哪里。 我正在使用for循环来完成实验的迭代。 不知道。
一种方法是
1 2 3 4 5 6 7 8
| julia> M = [1 1 1;1 1 0;1 1 1]
3×3 Array{Int64,2}:
1 1 1
1 1 0
1 1 1
julia> indmin(minimum(M, 2))
2 |
minimum(X, dim)沿维度dim找到最小值。
indmin(X)返回最小值的索引。
一种更快的方式
ind2sub(M, indmin(M))[1]