【问题标题】:From vector to matrix reshape every ith rows for each column从向量到矩阵重塑每一列的每一行
【发布时间】:2018-11-22 15:43:12
【问题描述】:

我有这个向量:

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 函数?

【问题讨论】:

    标签: arrays matlab matrix resize reshape


    【解决方案1】:

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

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

    mat = repmat(arr,1,3);
    

    你可以阅读更多关于repmathere的信息。


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

    mat = reshape(arr,3,4)'
    

    【讨论】:

    • 请注意,' 也适用复共轭。只是转置使用.'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 2015-05-15
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多