How to reshape rows into columns

5 Ansichten (letzte 30 Tage)
Amandeep
Amandeep am 1 Sep. 2011
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

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 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 Kommentare
Andrei Bobrov
Andrei Bobrov am 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 am 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by