Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

How to reshape rows into columns

Asked by Amandeep on 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

0 Comments

Amandeep

Products

No products are associated with this question.

2 Answers

Answer by Andrei Bobrov on 1 Sep 2011
Accepted answer
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

Amandeep on 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 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 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

Andrei Bobrov
Answer by Sivakumaran Chandrasekaran on 1 Sep 2011

Hi, There is a command named reshape. Check with it.

Regards, Sivakumaran vlsiva@yahoo.co.in

2 Comments

Amandeep on 1 Sep 2011

How do I use reshape on the third row?

Oleg Komarov on 1 Sep 2011

@Siva: if I were you I wouldn't leave my mail on a forum.

Sivakumaran Chandrasekaran

Contact us