有没有办法在Julia中旋转3D数组?

我试图在 julia 中旋转 3D 数组,就好像它代表 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。

任何帮助表示赞赏。

回答

对于二维矩阵,您可以使用rotl90,rotr90和等函数rot180。这些可以结合使用mapslices以获得所需的效果。下面的示例是维度上的旋转1以及维度2中数组的每个切割3

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


以上是有没有办法在Julia中旋转3D数组?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>