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

 採用された回答

Andrei Bobrov
Andrei Bobrov 2011 年 9 月 1 日

0 投票

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 件のコメント

Amandeep
Amandeep 2011 年 9 月 1 日
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 2011 年 9 月 1 日
>> 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 2011 年 9 月 1 日
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

サインインしてコメントする。

その他の回答 (1 件)

Sivakumaran Chandrasekaran
Sivakumaran Chandrasekaran 2011 年 9 月 1 日

0 投票

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

2 件のコメント

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

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by