フィルターのクリア

how to write an if statement for a matrix with some NaN elements?

2 ビュー (過去 30 日間)
Mnr
Mnr 2015 年 5 月 5 日
編集済み: Stephen23 2015 年 5 月 6 日
Hello all,
I have a matrix with some elements 0s or 1s and the rest are NaNs. I would like to write an if statement that ignores the NaN elements of the matrix. I have tried
if (a(:)==1 or a(:)==0)
------------
end
however, I am getting an error. I would appreciate if somebody can help me please. Thanks.
  7 件のコメント
Stephen23
Stephen23 2015 年 5 月 6 日
編集済み: Stephen23 2015 年 5 月 6 日
As Walter Roberson pointed out, it is very important to know that NaN is never equal to anything, not even itself:
>> NaN==NaN
ans =
0
The only way to test for NaN is using isnan, (or by implication isinf and isfinite):
Walter Roberson
Walter Roberson 2015 年 5 月 6 日
~(A==A) is also a test for A being NaN.

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

回答 (1 件)

Walter Roberson
Walter Roberson 2015 年 5 月 5 日
nonnanlocs = ~isnan(a);
a(nonnanlocs) = SomeFunction(a(nonnanlocs));

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by