2

2 つの行列がAありB、乗算したいのですが、 nans が含まれています。

デフォルトの乗算では、データnanに 1 つでもあった結果の列全体が表示さnanれます。nansum/ nanmeanetcのように、それらを無視したい。つまり、計算する代わりに

 sum( A(i,j) * B(j,k) )

使ってほしいnansum

これは で置き換えnan0から掛けることで可能だと思いますが、持つことのポイントはそれnansumを回避することですよね?

4

2 に答える 2

5

乗算の結果がNaNs になる理由は、それらを処理する真の方法が 1 つもないためです。あなたの場合、それらをゼロに置き換える必要がある場合は、書くのが最も簡単です

A(isnan(A)) = 0;

乗算を実行する前に。独自のコードからは組み込みの行列代数と同様のパフォーマンスが得られないため、行列の乗算を書き直すことはお勧めしません。

nansum、および特にnanmeanetc は統計ツールボックスの関数であり、NaNs は単純にゼロに置き換えられるのではなく、実際には計算から削除されます。これは、統計のコンテキストでは、NaN欠落しているデータ ポイントを示すために使用されるためです。統計では行列乗算を行うことはあまりないnanmultため、(たとえば回帰内で) 行列乗算を行う場合、ベクトルから 1 つの観測値が欠落している場合は通常、全体を破棄する必要があることを意味します。とにかく、行/列。

于 2013-01-06T03:18:07.510 に答える