给定 a= [1;2;3]
我想将其更改为 b
其中 b
是
b(1,1,1) = 1
b(1,1,2) = 2
b(1,1,3) = 3.
我该怎么做?没有内置命令吗?
最佳答案
使用permute
将第一个维度作为第三个维度放在最后,并将第三个和第二个维度放在前面(它们的顺序无关紧要)。因此,我们将有两个这样的实现,就像这样 -
permute(a,[3 2 1])
permute(a,[2 3 1])
您还可以使用 reshape
将元素推回三维,就像这样 -
reshape(a,1,1,numel(a))
关于permute
的小教程
没有任何permute
(尺寸重新排列)更改的 3D 数组 A
将是:permute(A,[1 2 3])
。
现在,您所做的任何排列
都将是 w.r.t. [1 2 3]
的原始顺序。假设您想交换第 1 维和第 3 维,所以交换 [1 2 3]
中的 1
和 3
,给我们 [3 2 1]
并将其用作 permute
中的第二个参数。
这是为了让您的置换
技能更强 - 比方说,您交换第一维和第三维,然后对这个置换的 3D 数组进行一些处理。现在,你想回到原来的顺序,所以你需要换回第 1 维和第 3 维。所以,你再次使用 [3,2,1]
,像这样 - permute(permute(A,[3 2 1]),[3 2 1])
这基本上是 permute(A,[1 2 3])
是的,那是 A
,回到 < em>家!
关于matlab - 将 1D 向量 (nx1) 更改为 3D 矩阵 (1x1xn),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32732524/