从向量到矩阵,重塑每一列的第ith行

时间:2018-11-22 15:43:12

标签: arrays matlab matrix resize reshape

我有这个向量:

arr = [1; 2; 3; 1; 2; 3; 1; 2; 3; 1; 2; 3]

并希望将其转换为如下所示的4x3矩阵:

mat = [1 1 1;...
2 2 2;...
3 3 3;...
1 1 1;...
2 2 2;...
3 3 3;...
1 1 1;...
2 2 2;...
3 3 3;...
1 1 1;...
2 2 2;...
3 3 3]

到目前为止,我是通过以下方式实现的:

a1 = arr(1:3:end);
a2 = arr(2:3:end);
a3 = arr(3:3:end);
mat = [a1 a2 a3];

例如,reshape函数是否有更方便的方法?

1 个答案:

答案 0 :(得分:2)

reshape不会更改矩阵中元素的数量。通过重新排列现有的 元素来重塑矩阵。

您可以使用repmat,它会一次或多次复制矩阵或向量:

mat = repmat(arr,1,3);

您可以详细了解repmat here


此外,您的解决方案没有提供您在代码块中显示的矩阵。要获得解决方案给出的结果,可以这样使用reshape

mat = reshape(arr,3,4)'