Also, every time I run the for loop again, matrices A1 and B1 reduce their dimension...this shouldn't happen
if statement does not execute the statements
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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?
Respuesta aceptada
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
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!