change only those zeros to NaN if all in row are 0
11 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have
a =
1 2 3
0 0 0
2 1 0
4 5 0
0 0 0
2 0 1
I need
b =
1 2 3
NaN NaN NaN
2 1 0
4 5 0
NaN NaN NaN
2 0 1
i.e. only if all elements in row are 0 replace with NaN
0 commentaires
Réponse acceptée
Thomas
le 6 Juin 2012
a(any(a,2)==0,:)=NaN;
b=a
3 commentaires
Image Analyst
le 6 Juin 2012
It works because any() looks for non-zeros, so it's only zero if there are no non-zeros, in other words, if they are all zeros. Perhaps my answer (not my comment above) might be more intuitive though - it used all().
Plus de réponses (1)
Image Analyst
le 6 Juin 2012
% Make a copy so we don't change a.
b=a
% Find out which rows are all zeros.
nonZeroRows = all(b == 0, 2)
% Assign all columns of the all-zero rows to nans.
b(nonZeroRows, :) = NaN
0 commentaires
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!