Matlab矩阵乘法忽略了nans?

San*_*har 2 matlab matrix nan

我有两个矩阵AB我想繁殖,但它们包含nan秒.

默认乘法会nan放下结果的整列,其中nan数据中只有一个.我想忽略它们,比如nansum/ nanmeanetc do.换句话说,而不是计算

 sum( A(i,j) * B(j,k) )
Run Code Online (Sandbox Code Playgroud)

我想要它使用nansum.

我想这是可能通过更换nan0,然后相乘,但其点nansum是消除了吧?

Jon*_*nas 5

乘法导致NaNs 的原因是没有一种真正的方法可以处理它们.如果在你的情况下,它们应该被零替换,那么最容易写

A(isnan(A)) = 0;
Run Code Online (Sandbox Code Playgroud)

在运行乘法之前.我建议不要重写矩阵乘法,因为你不会从你自己的代码中获得与内置矩阵代数类似的性能.

nansum,尤其是nanmean等统计工具箱的功能,其中NaNs不是简单地用零替换,而是实际从计算中删除,因为在统计的上下文中,NaN用于指示缺失的数据点.没有nanmult,因为在统计学中,你不经常矩阵乘法,如果你这样做(例如在回归中),从向量中忽略一个观察通常意味着你想要抛出整个无论如何,行/列.