How to split a nxn matrix into n vectors

Hi at all, I want to split a nxn matrix in n vectors:
M= [1 2 3 ; 4 5 6 ; 7 8 9];
in
m1 = [1 2 3];
m2 = [4 5 6];
m3 = [7 8 9];
I know that m1=M(1,:);
m2=M(2,:) ... ...
m(n)=M(n,:)
but if the matrix is very large how can I resolve? Thanks a lot
Max

2 commentaires

Yash
Yash le 16 Nov 2012
reshape it.
Max
Max le 16 Nov 2012
How? I try
[X Y]= size(M)
a=reshape(M,X,Y);
but a == M
(I certainly wrong)

Connectez-vous pour commenter.

 Réponse acceptée

Max
Max le 17 Nov 2012
Modifié(e) : Max le 17 Nov 2012

0 votes

Ok, thanks at everybody!
Sorry for the wrong word but i not speak English very goog; with struct I mean cell array, sorry ;)
However, how i can have single value in one cell?

Plus de réponses (3)

Andrei Bobrov
Andrei Bobrov le 16 Nov 2012
m = num2cell(M,2);
your m1 -> m{1}

1 commentaire

Max
Max le 16 Nov 2012
Thanks, but I need separate values in the vector... not "all in one" :D

Connectez-vous pour commenter.

Jan
Jan le 16 Nov 2012

1 vote

Using a list of variable like "m1, m2, ..." is a really bad idea and it increases the complexity of programs without any advantage. Andrei's suggestion to use a cell array is much better. See

3 commentaires

Max
Max le 16 Nov 2012
Thanks a lot for the link.. I've read it... But in my case I need to have separate values in the vector and not in a struct because with separate values I can use polyder functions
Andrei Bobrov
Andrei Bobrov le 16 Nov 2012
Modifié(e) : Andrei Bobrov le 16 Nov 2012
eg
M= [1 2 3 ; 4 5 6 ; 7 8 9];
m = num2cell(M,2);
out = polyder(m{1:2}); % for your version out = polyder(m1,m2);
Jan
Jan le 16 Nov 2012
"Struct"? Structs have field names, but I do not see any field names here. Do you mean "cell array"?
I think that Andrei has guessed already, what you are trying to do. But in general in is more efficient, when you explain exactly, what you are trying to do.

Connectez-vous pour commenter.

Matt Fig
Matt Fig le 16 Nov 2012
Jan is correct. Doing this is a bad idea. If you need to use the POLYDER function on each row of a large array, there are several ways to do it without making many variables.
M = randi(4,6,4);
N = num2cell(M,2);
PD = cellfun(@polyder,N,'Un',0)
Now PD{1} is the POLYDER of M(1,:), PD{2} is the POLYDER of M(2,:), etc.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by