在Julia中返回数组中的最小索引

时间:2018-04-19 15:47:40

标签: arrays matlab julia minimum

我正在将一些代码从Matlab转换为Julia。在matlab代码中:

[~,pStar] = min(min([dPlus,dMinus],[],2))

将返回每行中的最小元素并以列形式输出,然后返回列中最小元素的索引(行),如下所示:

>> 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

我的问题是:朱莉娅相当于什么?谢谢

2 个答案:

答案 0 :(得分:3)

indmin返回最小值的线性索引。您可以使用ind2sub将其转换为下标表单,并从中提取行:

julia> indmin(M)
8

julia> row, col = ind2sub(M, indmin(M))
(2, 3)

julia> row
2

这种方法避免了迭代两次并创建了一个中间数组。

更新:在Julia> = 0.7中,已更改为argmin,返回CartesianIndex您可以直接使用的内容。您还可以使用findmin来获取最小值及其索引。

答案 1 :(得分:1)

一种方法是

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]