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

 Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 23 Fév 2014
Modifié(e) : Azzi Abdelmalek le 23 Fév 2014
A= [5 3 2 6 7 26 4 33 3]
out= reshape(A,3,[])'

4 commentaires

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]
Image Analyst
Image Analyst le 23 Fév 2014
Modifié(e) : Image Analyst le 23 Fév 2014
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.
Christopher
Christopher le 23 Fév 2014
Modifié(e) : Christopher le 23 Fév 2014
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?

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by