reference elements in a matrix based on values in a vector

I have the 1x9 vector [5 3 2 6 7 26 4 33 3]
I want to obtain the matrix [5 3 2; 6 7 26; 4 33 3] using completely vectorized code. How can this be done?
As a start, I have vectorized code to build the 3x3 matrix [ 1 2 3; 4 5 6; 7 8 9], so that the values are the vector columns, but I don't know how to do the vectorized referencing.
Thanks

 Accepted Answer

A= [5 3 2 6 7 26 4 33 3]
out= reshape(A,3,[])'

4 Comments

This works, but can it be made more general so that the 3x3 matrix can have any numbers in it?
For instance, if the matrix were [2 5 9; 3 2 1; 5 7 3] the solution would be [3 7 3; 2 3 5; 7 4 2]
There is nothing in "out= reshape(A,3,[])'" that depends on what numbers are in A. Your "A" can be anything - any numbers at all.
So now you have 2D arrays rather than a row vector. But what I don't understand is how you got that solution. Why are there 2 7's in the solution but only one in the "matrix"? Please explain element by element how you got the solution element from the input matrix.
There are two 7's because there are two 5's. The 5th element in the vector is =7. The numbers in the matrix should refer to the column number in the vector. You see?

Sign in to comment.

More Answers (0)

Categories

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!