从一个向量到另一个矩阵,为每一列每i行整形一次



我有这个向量:

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)'

相关内容

  • 没有找到相关文章