有没有一种方法可以在Julia中旋转3D数组?

3

我试图在Julia中绕x,y或z轴以90度为增量旋转一个三维数组,就像它代表3D空间中的物体一样。 实际上,我想知道是否有一种方法可以沿着x,y和/或z轴以90度的增量旋转数组。

在2D中,如果我逆时针旋转,它会是这样的...

1 2 3           3 6 9
4 5 6   ----->  2 5 8
7 8 9           1 4 7

我希望相同的逻辑也可以应用于3D领域。

任何帮助都将不胜感激。

1个回答

8

对于二维矩阵,您可以使用rotl90rotr90rot180等函数。这些函数可以与mapslices组合使用,以获得所需的效果。下面是一个示例,在第3维的每个切片上旋转第12维。

julia> A=collect(reshape(1:27,3,3,3))
3×3×3 Array{Int64,3}:
[:, :, 1] =
 1  4  7
 2  5  8
 3  6  9

[:, :, 2] =
 10  13  16
 11  14  17
 12  15  18

[:, :, 3] =
 19  22  25
 20  23  26
 21  24  27


julia> mapslices(rotr90,A,dims=[1,2])
3×3×3 Array{Int64,3}:
[:, :, 1] =
 3  2  1
 6  5  4
 9  8  7

[:, :, 2] =
 12  11  10
 15  14  13
 18  17  16

[:, :, 3] =
 21  20  19
 24  23  22
 27  26  25

1
非常好的答案,尽管我不知道你需要这个做什么。 - Georgery
1
伟大的不是答案,而是Julia语言的灵活性! - Przemyslaw Szufel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接