我正在将一些代码从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
我的问题是:朱莉娅相当于什么?谢谢
答案 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]