How to reshape rows into columns

7 views (last 30 days)
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

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 1 Sep 2011
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 Comments
Andrei Bobrov
Andrei Bobrov on 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 on 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

Sign in to comment.

More Answers (1)

Sivakumaran Chandrasekaran
Hi, There is a command named reshape. Check with it.
Regards, Sivakumaran vlsiva@yahoo.co.in
  2 Comments
Amandeep
Amandeep on 1 Sep 2011
How do I use reshape on the third row?
Oleg Komarov
Oleg Komarov on 1 Sep 2011
@Siva: if I were you I wouldn't leave my mail on a forum.

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!