change only those zeros to NaN if all in row are 0
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Thomas
am 6 Jun. 2012
a(any(a,2)==0,:)=NaN;
b=a
3 Kommentare
Image Analyst
am 6 Jun. 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().
Weitere Antworten (1)
Image Analyst
am 6 Jun. 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 Kommentare
Siehe auch
Kategorien
Mehr zu NaNs finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!