arrays - 遍历 Julia 中的多个变量(或整个矩阵)
问题描述
我有一个 5 维数组想要对每个字段进行计算,并根据结果用“真”或“假”填充每个字段。现在我想知道是否有一种不使用 5 个“嵌套”循环的快速方法。谢谢你的帮助
编辑:对不起,问题不清楚。我需要用 5 个不同的变量进行计算,并且检查了每个可能的组合。我目前的做法是这样的:
while i<10
while j<10
while k < 10
while l<10
while m <10
#some calculation which returns true or false
A[i,j,k,l,m]=f(i, j, k, l, m);
m+=1;
end
l+=1;
end
k +=1;
end
j+=1;
end
i+=1;
end
其中 A 是我的数组。现在我想知道是否有更有效的方法来做到这一点。对不起,我希望现在更清楚。
解决方案
例如,您可以像这样使用CartesianIndices
函数:
julia> x = Array{Tuple}(undef, 2,2,2,2,2);
julia> for idx in CartesianIndices(x)
x[idx] = Tuple(idx)
end
julia> x
2×2×2×2×2 Array{Tuple,5}:
[:, :, 1, 1, 1] =
(1, 1, 1, 1, 1) (1, 2, 1, 1, 1)
(2, 1, 1, 1, 1) (2, 2, 1, 1, 1)
[:, :, 2, 1, 1] =
(1, 1, 2, 1, 1) (1, 2, 2, 1, 1)
(2, 1, 2, 1, 1) (2, 2, 2, 1, 1)
[:, :, 1, 2, 1] =
(1, 1, 1, 2, 1) (1, 2, 1, 2, 1)
(2, 1, 1, 2, 1) (2, 2, 1, 2, 1)
[:, :, 2, 2, 1] =
(1, 1, 2, 2, 1) (1, 2, 2, 2, 1)
(2, 1, 2, 2, 1) (2, 2, 2, 2, 1)
[:, :, 1, 1, 2] =
(1, 1, 1, 1, 2) (1, 2, 1, 1, 2)
(2, 1, 1, 1, 2) (2, 2, 1, 1, 2)
[:, :, 2, 1, 2] =
(1, 1, 2, 1, 2) (1, 2, 2, 1, 2)
(2, 1, 2, 1, 2) (2, 2, 2, 1, 2)
[:, :, 1, 2, 2] =
(1, 1, 1, 2, 2) (1, 2, 1, 2, 2)
(2, 1, 1, 2, 2) (2, 2, 1, 2, 2)
[:, :, 2, 2, 2] =
(1, 1, 2, 2, 2) (1, 2, 2, 2, 2)
(2, 1, 2, 2, 2) (2, 2, 2, 2, 2)
The code stores in an entry `x[a,b,c,d,e]` a tuple `(a,b,c,d,e)`.
推荐阅读
- html - Edge 44 renders mat-table sticky header incorrectly
- excel - 循环 VBA 代码以检查突出显示的单元格
- docker - Docker 无法授予入口点中的脚本权限
- easeljs - how to move a line Shape object
- java - Java not allowed to call recursive method with generic type?
- powershell - PowerShell脚本将文件而不是子文件夹复制到SFTP并在完成后移动到子文件夹
- html - 在 HTML 中调整包含图标和文本的列表中的间距
- c# - Running .NET 2.0 4.0 machine without app.config?
- ruby - `initialize': 使用 Nokogiri 打开站点时没有这样的文件或目录@rb_sysopen
- javascript - 如何为某个 div(而不是整个页面)运行 queryCommandState?