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

Arrays 在Julia中返回数组中的最小索引,arrays,matlab,julia,minimum,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 >> [~,r

我正在将一些代码从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
我的问题是:Julia与此等价的是什么?谢谢

一种方法是

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
minimumX,dim沿尺寸标注dim查找最小值

indminX返回最小值的索引

更快的方法是

ind2subM,indminM[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
minimumX,dim沿尺寸标注dim查找最小值

indminX返回最小值的索引

更快的方法是

ind2subM,indminM[1]

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

julia> indmin(M)
8

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

julia> row
2
这种方法避免了重复两次和创建中间数组

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

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

julia> indmin(M)
8

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

julia> row
2
这种方法避免了重复两次和创建中间数组


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

很高兴我能帮忙。请阅读;如果你找到了一个能令人满意地解决问题的答案,你可以用一个复选标记将其标记为已接受。当然,我得到了一个无效的理解错误。我真的需要你看看剩下的代码。朱莉娅的调试太模糊了,我一点也不知道它是从哪里来的。我使用for循环来完成一个实验的迭代。不知道。很高兴我能帮上忙。请阅读;如果你找到了一个能令人满意地解决问题的答案,你可以用一个复选标记将其标记为已接受。当然,我得到了一个无效的理解错误。我真的需要你看看剩下的代码。朱莉娅的调试太模糊了,我一点也不知道它是从哪里来的。我使用for循环来完成一个实验的迭代。不知道。