在 Julia 中返回数组中的最小索引
Posted
技术标签:
【中文标题】在 Julia 中返回数组中的最小索引【英文标题】:Returning a minimum index in an array in Julia 【发布时间】:2018-09-30 04:49:13 【问题描述】:我正在将一些代码从 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 相当于什么?谢谢
【问题讨论】:
【参考方案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
来获取最小值及其索引。
【讨论】:
很高兴我能帮上忙。请阅读this;如果您找到的答案实际上令人满意地解决了您的问题,您可以使用一个复选标记将其标记为“已接受”。 当然,我收到“无效理解”错误。我真的需要你看看其余的代码。 Julia 的调试非常模糊,我完全不知道它可能来自哪里。我正在使用 for 循环来进行实验的迭代。不知道。【参考方案2】:一种方法是
julia> M = [1 1 1;1 1 0;1 1 1]
3×3 ArrayInt64,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]
【讨论】:
以上是关于在 Julia 中返回数组中的最小索引的主要内容,如果未能解决你的问题,请参考以下文章