-2

関数で NaN を無視する方法はありますか?

eigの値を取得したい関数eigはNaNを扱っていないのでNaNは無視

私は行列 NxM を持っており、それに NaN 値が含まれています。関数 eig を適用する必要がありますが、この関数は NaN 値では機能しないため、NaN を削除するか、それを直接実行する関数がある場合は (nanmax が与える) NaN を無視した最大値)

4

1 に答える 1

4

申し訳ありませんが、マトリックス内の NaN 要素を無視して固有値を計算する魔法の方法はありません。固有値を計算するには、配列内のすべての要素が必要です。他の人が示唆しているように、NaNをチェックしたりNaNを削除したりするツールは、まったく役に立ちません。配列の要素を単純に削除すると、配列は正方形ではなくなります。したがって、MATLAB は配列をベクトルに変換しますが、これはまったく別のものです! また、NaN をゼロに変換しても、配列に意味のある固有値が得られる可能性はほとんどありません。

非常に単純なことを行う nanmean のようなツールも役に立ちません。(Nanmean は、各列の平均を計算するため、その作業を行うことができます。NaN は単純に無視されます。非 NaN 要素を合計し、nan-NaN の数で割ります。)

最後に、正方でない NxM 行列がある場合、固有値を計算しても意味がありません。固有値は、正方行列に対してのみ定義されます。おそらく、特異値について考えているか、主成分を実行しようとしているのでしょう。いずれの場合でも、nan を含むすべての行または列を単純に削除する場合を除き、完全な行列が必要になります。

フリーランチはありません。その行列の固有値を計算するには、行列全体を決定する必要があります。少なくとも、あなたが要求したことをしようとしても意味がないので、問題を再考する必要があります。

于 2013-09-13T11:48:10.947 に答える