How to reshape rows into columns

How can I change the following matrix:
[1, 5,0,0; 2,4,0,0; 3, 2,6,4]
to look like:
[1,5; 2, 4; 3,2; 3,6; 3,4]?
Any suggestion would be great. Thanks

 Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 1 Sep 2011

0 votes

A =[1, 5,0,0; 2,4,0,0; 3, 2,6,4]
[i1 j1] = find(A(:,2:end))
sz = size(A)
out = sortrows([A(i1,1) A(sz(1)+sub2ind(sz- [0 1],i1,j1))],1)
more
[i2 j2 c] = find(A)
t = j2~=1
out = sortrows([A(i2(t),1) c(t)],1)
variant 3
AA = A(:,2:end)
[i1,~] = find(AA)
out = sortrows([A(i1,1) reshape(AA(AA~=0),[],1)],1)

3 commentaires

Amandeep
Amandeep le 1 Sep 2011
Thanks for your quick response.
But waht if instead:
A = [1,5,0,0;3,4,0,0;5,2,6,4]
Andrei Bobrov
Andrei Bobrov le 1 Sep 2011
>> A = [1,5,0,0;3,4,0,0;5,2,6,4];
[i2 j2 c] = find(A);
t = j2~=1;
out = [A(i2(t),1) c(t)]
out =
1 5
3 4
5 2
5 6
5 4
Amandeep
Amandeep le 1 Sep 2011
I think I nearly figured it out
A = [1,5,0,0;3,4,0,0;5,2,6,4]
AA = permute(A(:,2:end),[2,1])
AA = reshape(AA,numel(A(:,2:end)),1)
zero = (AA==0)
AA(zero) = []
Now just trying to create the first column

Connectez-vous pour commenter.

Plus de réponses (1)

0 votes

Hi, There is a command named reshape. Check with it.
Regards, Sivakumaran vlsiva@yahoo.co.in

2 commentaires

Amandeep
Amandeep le 1 Sep 2011
How do I use reshape on the third row?
Oleg Komarov
Oleg Komarov le 1 Sep 2011
@Siva: if I were you I wouldn't leave my mail on a forum.

Connectez-vous pour commenter.

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by