if statement does not execute the statements

1 visualización (últimos 30 días)
Maria445
Maria445 el 14 de Oct. de 2017
Comentada: Star Strider el 14 de Oct. de 2017
I can't understand what I'm doing wrong here; basically I have two matrices, A and B, and if one of the two matrices has a row in which every entry is equal to NaN, I want to delete the corresponding row in the other matrix as well. This is the code I used:
A1 = A;
B1 = B;
for i = 1 : size(A,1)
if sum(isnan(A(i,2:end)))==size(A(:,2:end),2) || ...
sum(isnan(B(i,2:end)))==size(B(:,2:end),2);
A1(i,:) = []
B1(i,:) = [];
end
end
However, in matrix B1 there are still many rows entirely made of NaN values. Why is this not working?
  1 comentario
Maria445
Maria445 el 14 de Oct. de 2017
Also, every time I run the for loop again, matrices A1 and B1 reduce their dimension...this shouldn't happen

Iniciar sesión para comentar.

Respuesta aceptada

Star Strider
Star Strider el 14 de Oct. de 2017
If I understand correctly what you want to do, this should work:
A = randi(9, 7, 4); % Create Matrices
B = randi(9, 7, 4); % Create Matrices
A([2 6],:) = NaN; % Create ‘NaN’ Rows In ‘A’
B(4,:) = NaN; % Create ‘NaN’ Rows In ‘B’
row_idx = all(isnan(A),2) | all(isnan(B),2); % Logical Index For ‘NaN’ Rows In Both
A(row_idx,:) = []; % Delete Rows In ‘A’
B(row_idx,:) = []; % Delete Rows In ‘B’
  2 comentarios
Maria445
Maria445 el 14 de Oct. de 2017
Yes! This is exactly what I wanted to do, thank you so much!! :)
Star Strider
Star Strider el 14 de Oct. de 2017
As always, my pleasure!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices 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