Replace value with index in 2D array

27 visualizaciones (últimos 30 días)
Tha saliem
Tha saliem el 3 de Abr. de 2017
Comentada: Star Strider el 3 de Abr. de 2017
Hi I have a 2D array like this
A=[0 0 1; 1 0 1; 0 1 0]
I want to replace 1 in each row with column index value. e.g new matrix will be like this:
result=[0 0 3 ; 1 0 3 ; 0 2 0]
Thanks in advance

Respuesta aceptada

Star Strider
Star Strider el 3 de Abr. de 2017
This works:
A=[0 0 1; 1 0 1; 0 1 0];
[~,CIV] = find(A); % ‘CIV’ = ‘Column Index Value’
A(A>0) = CIV
result = A
result =
0 0 3
1 0 3
0 2 0
  5 comentarios
Tha saliem
Tha saliem el 3 de Abr. de 2017
Yes got it. @dpb & @Star Strider Thank you so much for solution it really helped.
Star Strider
Star Strider el 3 de Abr. de 2017
Our pleasure!

Iniciar sesión para comentar.

Más respuestas (2)

Jan
Jan el 3 de Abr. de 2017
Editada: Jan el 3 de Abr. de 2017
A version without FIND:
A = [0 0 1; 1 0 1; 0 1 0];
R = A .* (1:3); % Auto expanding in >= R2016b
In older Matlab versions:
R = bsxfun(@times, A, 1:3)
  2 comentarios
Stephen23
Stephen23 el 3 de Abr. de 2017
+1 nice.
Tha saliem
Tha saliem el 3 de Abr. de 2017
Good one. Thanks alot @Jan Simon

Iniciar sesión para comentar.


dpb
dpb el 3 de Abr. de 2017
>> [~,j]=find(A);
>> A(A==1)=j
A =
0 0 3
1 0 3
0 2 0
>>

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Community Treasure Hunt

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

Start Hunting!

Translated by