我有这个向量:
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
函数?
reshape
不会更改矩阵中元素的数量。它通过重新排列现有元素来重塑矩阵。
在您的情况下,您可以使用repmat
,它将矩阵或向量复制一次或多次:
mat = repmat(arr,1,3);
你可以在这里阅读更多关于repmat
的信息。
此外,您的解决方案没有给出您在代码块中显示的矩阵。要获得解决方案给出的结果,可以使用reshape
如下:
mat = reshape(arr,3,4)'