【发布时间】:2014-06-09 09:09:33
【问题描述】:
我有以下变量:
x = [0 1 2 2 3 4 5 6 7 8 9];
y = [0 1 2 nan 3 4 5 6 7 8 9];
我想通过一个等式传递“y”得到“y2”,例如:
y2 = y.*2;
请注意,这只是一个示例。我的真实方程式更复杂。 “真实”方程不允许 nans 在向量内(因为一个值取决于最后一个值)。
但是,如果我不能让 nans 通过等式,我可以输入
y2 = y(~isnan(y)).*2;
y2 =
0 2 4 6 8 10 12 14 16 18
这会删除 nan 然后执行计算。
如何使“y2”恢复到与“x”相同的长度,即以 nan 作为第四个值?
类似:
y2 =
0 2 4 NaN 6 8 10 12 14 16 18
我这样做的原因是我想绘制 'y2' 和 'x',因此它们的大小必须相同。
我意识到我可以做到
x2 = x(~isnan(y))
然后只针对“y2”绘制“x2”,但我想按照我上面指定的方式找到一种方法。
【问题讨论】:
-
不会简单地
y2 = y.*2做你想做的事吗?? -
如帖子中指定的“nans”不能通过等式。
-
我经常使用这些功能,通常只删除 nans 是不安全的。在大多数情况下,有必要在函数中处理它。
标签: arrays matlab vector replace nan