Info

La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.

Loop to separate rows in one matrix and delete elements in that matrix based on another matrix

1 visualización (últimos 30 días)
I want to write a for loop that will allow me to extract each row of a matrix and then remove elements from such rows based on elements in another matrix that meet a certain criteria. To explain this further, I have matrix b_loc, which is a 510x977 matrix and matrix z_probs which is a 510 x 977 x 2 matrix. For the first round of the loop I want to extract the first row of matrix b_loc then remove any values in that row that correspond to the positions z_probs(1,:,1)<0.5. For the second round of the loop I want to extract the second row of matrix b_loc then remove any values in that row that correspond to the positions z_probs(2,:,1)<0.5. And so on for all 510 rows. I have tried using the following code and I keep getting the error: Unable to perform assignment because brace indexing is not supported for variables of this type.
for i=1:510
b_aoi{i}=b_loc(i,:)
b_removed{i}=b_aoi{i}(z_probs(i,:,1)>0.5)
end
Any help would be greatly appreciated!

Respuestas (1)

Sindar
Sindar el 1 de Oct. de 2020
% find indices where z_probs<0.5
idx = (z_probs(:,:,1)<0.5);
% "remove" those values in b_loc by setting them to NaN
b_loc(idx)=nan;
  1 comentario
AS
AS el 3 de Oct. de 2020
Thanks. This sort of worked. I had to add in additional steps for the for loop. But the idea helped.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by