How to convert row to matrix with below format????

2 views (last 30 days)
I need to convert row to matrix. For example, A=[1 2 3 4 5]
Need answer like this, Ans=[1 0 0 0 0; 0 1 0 0 0; 0 0 1 0 0; 0 0 0 1 0; 0 0 0 0 1]
  7 Comments
Stephen23
Stephen23 on 6 Jun 2018
@Yuvaraj V: I have updated my answer to match your comment.

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 6 Jun 2018
Edited: Stephen23 on 6 Jun 2018
>> A = [3,1,1,4];
>> N = numel(A);
>> Z = zeros(N);
>> Z(sub2ind([N,N],1:N,A)) = 1
Z =
0 0 1 0
1 0 0 0
1 0 0 0
0 0 0 1
EDIT: if my example is acceptable, as you now write, then you will need something like this:
>> A = [5,1,1,4];
>> R = numel(A);
>> C = max(A);
>> Z = zeros(R,C);
>> Z(sub2ind([R,C],1:R,A)) = 1
Z =
0 0 0 0 1
1 0 0 0 0
1 0 0 0 0
0 0 0 1 0

More Answers (1)

Birdman
Birdman on 6 Jun 2018
Edited: Birdman on 6 Jun 2018
Something like this should work:
A=[3 1 1 4];
Ans=zeros(max(size(A)));
r=1:max(size(A));
c=A;
idx=sub2ind(size(repmat(A,max(size(A)),1)),r,c);
Ans(idx)=1
  2 Comments
Stephen23
Stephen23 on 6 Jun 2018
Edited: Stephen23 on 6 Jun 2018
@Birdman: there is a syntax error on this line:
Ans=zeros(max(size(A));
Birdman
Birdman on 6 Jun 2018
Edited: Birdman on 6 Jun 2018
Yes there should be one more parenthesis. Thanks.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!