添加2行,部分忽略NaN

时间:2015-09-01 08:34:59

标签: matlab vector add nan cell-array

我在单元格数组中给出了2列/向量。两个向量的长度始终相同。第一个向量中有一些值,随机出现一些NaN。第二个向量具有NaN,直到特定的点,然后只有值。现在我想将两个向量添加到具有相同长度的向量。可能会发生,计算是NaN + NaN,那么结果也应该是NaN。如果我有一个值+ NaN,结果应该是值。

这怎么可能呢?

是否更容易解决,如果我添加了载体,有空细胞而不是NaN?但我不能添加两个细胞载体,以及当有空细胞时我不能使用cell2mat。

例如

a = {NaN;2;3;NaN;5};
b = {1;2;NaN;NaN;5};

应该导致

c = a+b = {1;4;3;NaN;10};

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题:

您应该能够将单元格数组转换为向量。 NaN不会变为空值,但会变成NaN标志。然后,您可以先将向量相加,然后使用一些逻辑索引和内置的IsNaN函数更新最终向量。

a = cell2mat(a);
b = cell2mat(b);

c = a + b;

c(isnan(a) & ~isnan(b)) = b(isnan(a) & ~isnan(b));
c(~isnan(a) & isnan(b)) = a(~isnan(a) & isnan(b));