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

2 visualizaciones (últimos 30 días)
Yuvaraj Venkataswamy
Yuvaraj Venkataswamy el 6 de Jun. de 2018
Comentada: Yuvaraj Venkataswamy el 6 de Jun. de 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 comentarios
Stephen23
Stephen23 el 6 de Jun. de 2018
@Yuvaraj V: I have updated my answer to match your comment.
Yuvaraj Venkataswamy
Yuvaraj Venkataswamy el 6 de Jun. de 2018
@Stephen Cobeldick: Thank You so much

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 6 de Jun. de 2018
Editada: Stephen23 el 6 de Jun. de 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

Más respuestas (1)

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

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by