How to avoid for loop when indexing?

1 visualización (últimos 30 días)
Mantas Vaitonis
Mantas Vaitonis el 2 de Jul. de 2018
Comentada: Mantas Vaitonis el 2 de Jul. de 2018
Hello,
I have the following for loop, where pairs(500x10), is there to calculate cc without for loop?
for i=1:500
cc(i,:)=pairs(i,pairs(i,:));
end
  4 comentarios
Stephen23
Stephen23 el 2 de Jul. de 2018
@Mantas Vaitonis: given that pairs contains non-integer values, what do you expect
pairs(i,pairs(i,:));
to do?
Mantas Vaitonis
Mantas Vaitonis el 2 de Jul. de 2018
Those values suppose to be integer, i fixed my commnet, and should return valuse by index stored in pairs.

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 2 de Jul. de 2018
Editada: Jan el 2 de Jul. de 2018
s = size(pairs);
index = sub2ind(s, repmat((1:s(1)).', 1, s(2)), pairs)
cc = pairs(index)
  3 comentarios
Jan
Jan el 2 de Jul. de 2018
Editada: Jan el 2 de Jul. de 2018
pairs = [5 1 4 5 1];
s = size(pairs);
index = sub2ind(s, repmat((1:s(1)).', 1, s(2)), pairs)
cc = pairs(index)
cc =
1 5 5 1 5
I don't know why you get [4 5 2 4 5]. Please try it again.
Mantas Vaitonis
Mantas Vaitonis el 2 de Jul. de 2018
Maybe I did mistake when copying your code, now it did work, thank you.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by