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 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Maria445
il 14 Ott 2017
Commentato: Star Strider
il 14 Ott 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?
Risposta accettata
Star Strider
il 14 Ott 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 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!