How to reshape rows into columns

9 vues (au cours des 30 derniers jours)
Amandeep
Amandeep le 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

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 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 commentaires
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)

Sivakumaran Chandrasekaran
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 Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by