我有以下变量:
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在向量内(因为一个值取决于最后一个)。
但是,如果我不能通过这个等式,我可以输入
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',但我想找到一种方法,按照我上面指定的方式进行。
答案 0 :(得分:3)
将NaN索引存储在某处,然后使用它们将新值输入到正确的位置,然后再插回NaN值。
<强>代码强>
%%// Define function
func1 = @(x)x*2;
%%// Input data - y
y = [0 1 2 nan 3 4 5 6 7 8 9];
%%// Store NaN indices
nan_ind = isnan(y)
%%// Process data on the function
y2(~nan_ind) = func1(y(~nan_ind))
y2(nan_ind) = NaN