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

2 Ansichten (letzte 30 Tage)
Yuvaraj Venkataswamy
Yuvaraj Venkataswamy am 6 Jun. 2018
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 Kommentare
Stephen23
Stephen23 am 6 Jun. 2018
@Yuvaraj V: I have updated my answer to match your comment.
Yuvaraj Venkataswamy
Yuvaraj Venkataswamy am 6 Jun. 2018
@Stephen Cobeldick: Thank You so much

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Stephen23
Stephen23 am 6 Jun. 2018
Bearbeitet: Stephen23 am 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

Weitere Antworten (1)

Birdman
Birdman am 6 Jun. 2018
Bearbeitet: Birdman am 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 Kommentare
Stephen23
Stephen23 am 6 Jun. 2018
Bearbeitet: Stephen23 am 6 Jun. 2018
@Birdman: there is a syntax error on this line:
Ans=zeros(max(size(A));
Birdman
Birdman am 6 Jun. 2018
Bearbeitet: Birdman am 6 Jun. 2018
Yes there should be one more parenthesis. Thanks.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Performance and Memory finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by