鉴于a= [1;2;3]
我要将其更改为b
b
b(1,1,1) = 1
b(1,1,2) = 2
b(1,1,3) = 3.
我该怎么做?是否没有内置命令?
答案 0 :(得分:4)
使用permute
将投放第一个尺寸作为第三个尺寸返回到最后,并将第三个和第二个尺寸放到前面(它们的顺序无关紧要)。因此,我们将有两个这样的实现,如此 -
permute(a,[3 2 1])
permute(a,[2 3 1])
您还可以使用reshape
将元素推回到第三维,就像这样 -
reshape(a,1,1,numel(a))
关于permute
没有任何A
(尺寸重新排列)更改的3D数组permute
将是: permute(A,[1 2 3])
。
现在,你做的任何permuting
都是w.r.t. [1 2 3]
的原始顺序。假设你要交换第一维和第三维,所以交换1
中的3
和[1 2 3]
,给我们[3 2 1]
并将其用作{{1}中的第二个参数}}
这是为了让你的permute
技能更强 - 让我们说,你交换第一和第三维,然后你对这个置换的3D数组进行一些处理。现在,您想要回到原始订单,因此您需要换回第1和第3维度。因此,您再次使用permuting
- [3,2,1]
,这实际上是 permute(permute(A,[3 2 1]),[3 2 1])
,是的{{1} },回到 home !
答案 1 :(得分:1)
您也可以使用
b = shiftdim(a,-2);
根据documenation,
B = shiftdim(X,N)
将X
的维度移至N
。当N
时 正面,shiftdim
将尺寸向左移动并包裹N
领先维度到最后。当N
为否定时,shiftdim
将尺寸向右移动并用单线垫。单身维度[或简单"单身"]是
dim
的任何维度size(A,dim) = 1
。