change only those zeros to NaN if all in row are 0

7 ビュー (過去 30 日間)
Rahul
Rahul 2012 年 6 月 6 日
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

採用された回答

Thomas
Thomas 2012 年 6 月 6 日
a(any(a,2)==0,:)=NaN;
b=a
  3 件のコメント
per isakson
per isakson 2012 年 6 月 6 日
Shouldn't that be *all*:
b( all(b, 2) == 0, :) = NaN
Image Analyst
Image Analyst 2012 年 6 月 6 日
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().

サインインしてコメントする。

その他の回答 (1 件)

Image Analyst
Image Analyst 2012 年 6 月 6 日
% 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

カテゴリ

Help Center および File ExchangeNaNs についてさらに検索

タグ

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by