0

私は 4x5 行列を持っていますが、いくつかの NaN が値に混ざっています。次のように、NaNをその上または下の最も近い数値に変更したいと思います(各列は次の列に接続されていないため)。

A= NaN 10   35   150   1.5
   4.2 11   NaN  149   1.45
   4.8 NaN  36.1 153   1.3
   5.3 13   40   147   NaN

マトリックスを次のように変更する関数が必要です。

B= 4.2 10   35   150   1.5
   4.2 11   35   149   1.45
   4.8 11   36.1 153   1.3
   5.3 13   40   147   1.3

これを行うためにある種の補間を使用できると思いますが、その方法は完全にはわかりません。

このシナリオでは、手動で行うことができますが、1000sx1000s のマトリックスを使用するので、それを行うことができませんでした! これを行う方法の他の例を探しましたが、それらの多くは NaN をゼロに変更します。

助けてくれてありがとう。

ヨルダン

4

2 に答える 2

1

非 NaN 要素を使用して 2 次元配列の NaN 要素を補間する、John D'Errico による素晴らしいツールであるinpaint_nansを使用します。また、データの三角測量を使用しないため、外挿することもできます。これは、精度と速度および必要なメモリのトレードオフを提供する補間へのいくつかのアプローチを提供します。

于 2013-02-06T19:25:58.490 に答える
0

この関数が期待どおりに機能するかどうかはわかりませんが、役立つ場合があります。

knnimpute

例として

A = [1 2 5;4 5 7;NaN -1 8;7 6 0]

A =

     1     2     5
     4     5     7
   NaN    -1     8
     7     6     0

あなたはそれから電話する

knnimpute(A)

利回り

ans =

     1     2     5
     4     5     7
    -1    -1     8
     7     6     0
于 2013-02-06T19:57:13.597 に答える