添加 2 行,部分忽略 NaN

add 2 rows ignoring NaN partially

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

这怎么可能?

如果我添加向量,使用空单元而不是 NaN,是否更容易求解?但是我不能添加两个单元格向量,也不能在有空单元格时使用cell2mat。

例如

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

应该导致

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

如果我没有正确理解你的问题:

您应该能够将元胞数组转换为向量。 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));