/ / Uso de la operación lógica en una matriz ordenada (mantener la matriz ordenada después de la operación lógica) - matlab, boolean, operadores lógicos

Uso de la operación lógica en la matriz ordenada (mantener la matriz ordenada después de la operación lógica) - matlab, booleano, operadores lógicos

Idea

Tengo el siguiente problema. Para aumentar la velocidad de mi código, estoy tratando de escribir la mayor parte de mi script como operación lógica en lugar de como for-loops o similares.

Problema

Tengo una matriz ordenada y quiero mantenerla ordenada ya que la necesito ordenada como entrada para la siguiente función. Para hacerlo, utilicé el siguiente código:

target_level=sortrows(target_level,-9);
for i= 1:length(target_level);
ii=find(BML(:,1)==target_level(i,1));
targets(1,i)=ii;
end

Así que quiero encontrar el índice de la matriz BML para cada elemento de "target_level(:,1)", mientras se mantiene la clasificación. Para perder el bucle for y escribir esto como una operación lógica probé:

targets=ismember(BML(:,1),target_level(:,1));
targets=find(targets(:,1)==1);

Viene con los mismos resultados, el único problema es que pierdo la clasificación que apliqué en una variable que realmente no quiero mantener.

Pregunta

¿Hay alguna manera de mantener la clasificación mientras se utilizan operaciones lógicas?

Respuestas

1 para la respuesta № 1

Para obtener los índices mientras mantiene la clasificación, simplemente puede usar la segunda salida de ismember:

[~, targets] = ismember(BML(:,1),target_level(:,1));

Mejor,