我在单元格数组中给出了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};
答案 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));