将1D向量(nx1)更改为3D矩阵(1x1xn)

时间:2015-09-23 06:31:24

标签: matlab matrix

鉴于a= [1;2;3]我要将其更改为b b

b(1,1,1) = 1
b(1,1,2) = 2
b(1,1,3) = 3.

我该怎么做?是否没有内置命令?

2 个答案:

答案 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