5

在 Mathematica 中,我有一个缺少值的矩阵“a”,并且我有一个与“a”维度相同的矩阵“b”。我想计算 ab 但如果缺少值,我用“NA”表示,我希望它保持为“NA”。你能帮我解决这个问题吗?请注意,“a”的尺寸为 100 万 X300。

谢谢!

4

2 回答 2

7

一种方法是对结果使用替换规则,如下所示;

In[1]  {1, na, 3, na, 5} - {1, 2, 3, 4, 5}
Out[1] {0, -2 + na, 0, -4 + na, 0}

In[2]  {1, na, 3, na, 5} - {1, 2, 3, 4, 5}/. x_ + na -> na
Out[2] {0, na, 0, na, 0}

另一种方法是定义一个UpValuefor ,na这样涉及它的加法(和减法)总是会导致na; 像这样:

In[3] na /: Plus[___, na, ___] := na

UpValues如果您要进行多次手术,这将是一种方法,一次性更换规则。

于 2012-06-10T19:03:38.393 回答
4

您可以使用Indeterminate它,因为它已经具有您正在寻找的行为:

In[2]:= {1, na, 3, na, 5} - {1, 2, 3, 4, 5} /. na -> Indeterminate /. Indeterminate -> na

Out[2]= {0, na, 0, na, 0}

就个人而言,我只是使用Indeterminate开头,而不是NA.

于 2012-06-10T21:12:56.993 回答