How do I resize a matrix in MATLAB?

后端 未结 3 1907
旧时难觅i
旧时难觅i 2020-11-28 16:48

Suppose I had a 1-by-12 matrix and I wanted to resize it to a 4-by-3 matrix. How could I do this?

My current solution is kind of ug

相关标签:
3条回答
  • 2020-11-28 16:52

    to extend gnovice's solution:

    If you need a different order of matrix construction, use transpose (the ' operator) or permute() to change the dimension ordering after you have called reshape().

    0 讨论(0)
  • 2020-11-28 16:53

    Try the RESHAPE function:

    A = (1-by-12 matrix);
    B = reshape(A,4,3);
    

    Note that the matrix B will be filled with elements from A in a columnwise fashion (i.e. columns will be filled from top to bottom, moving left to right).

    Example:

    >> A = 1:12;
    >> B = reshape(A,4,3)
    
    B =
    
         1     5     9
         2     6    10
         3     7    11
         4     8    12
    
    0 讨论(0)
  • 2020-11-28 17:13

    reshape is of course the proper solution, as stated by @gnovice.

    A nice feature of reshape is that it allows this:

    A = 1:12;
    B = reshape(A,4,[]);
    B =
         1     5     9
         2     6    10
         3     7    11
         4     8    12
    

    So if you don't know how many columns there will be, reshape will compute it for you. Likewise, reshape will fill in the number of rows, if you leave that out.

    C = reshape(A,[],4)
    C =
         1     4     7    10
         2     5     8    11
         3     6     9    12
    
    0 讨论(0)
提交回复
热议问题