3

ベクトルをテストして、NaN が含まれているかどうかを確認しています。もしそうなら、私は自分の行動を実行したくありません。NaN が含まれていない場合は、アクションを実行する必要があります。現在、私のコードは次のようになっています (そして動作します):

if find(isnan(myVector))
else
    action;
end

節には何もないのでif、節の下で私の行動をとることelseはずさんに思えます。を使用する必要がないように、ブロックを言い換えるにはどうすればよいelseですか?

私はすでに次のことを試しました:

if ~find(isnan(myVector))
if find(~isnan(myVector))
if find(isfinite(myVector))

明確にするために、私の入力ベクトルには任意の数の NaN を含めることができますが、「action;」だけが必要です。何もない場合に実行します。

4

4 に答える 4

12
if all(~isnan(myVector))
    action;
end
于 2012-09-25T11:12:35.150 に答える
2

試す:

if isempty(find(isnan(myVector)))
    action;
end 
于 2012-09-25T11:12:09.110 に答える
1

この質問を見てください。データセットが十分に小さい場合は、すべての NaN 要素を見つけてカウントすることができます。

于 2012-09-25T11:14:28.223 に答える
1

問題は、検索がブール値ではなくベクトルを返すことです。あなたが望むのは次のようなものです:

length(find(isnan(myVector))) == 0

私は認めますが、matlab がベクトルを比較する方法を思い出せません。

于 2012-09-25T11:14:50.857 に答える