How can I convert a 2D matrix into separate 1D vectors in one line

9 visualizaciones (últimos 30 días)
hi
I have a 1673 x 34 matrix of data. I would like to put each column into its own 1673 length variable.
I know I can index each of these one at a time, but it will take long with 34 variables. Is there a way to do it in one line?
I can do it with a 1 x 34 using num2cell and then deal. Eg:
states = num2cell(states);
[ ddx, ddy, ddz, ddphi1, ddth1, ddpsi1, ddth3, ddpsi3, ddth4, ddpsi4, dx, dy, dz, dphi1, dth1, dpsi1, dth2, dth3, dpsi3, dth4, dpsi4, x, y, z, phi1, th1, psi1, th2, th3, psi3, th4, psi4, k, b]=deal(states{:});

Respuesta aceptada

Star Strider
Star Strider el 19 de Dic. de 2016
Please don’t!
I would use the mat2cell function to create them as a cell array. It is easier to address them as individual cell elements than as columns of your matrix.
Example:
M = randi(9, 1673, 34); % Create Data
C = mat2cell(M, size(M,1), ones(1,size(M,2))); % Create Column-Vector Cells
  3 comentarios
Amir Patel
Amir Patel el 19 de Dic. de 2016
Thanks for the fast reply.
How would I then be able to assign them to individual variables? Could I still use the "deal" function?
Amir Patel
Amir Patel el 19 de Dic. de 2016
Nevermind! Matt J's solution worked :)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Coordinate Transformations and Trajectories en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by