Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 用nan替换缺少的值_Arrays_Matlab_Vector_Replace_Nan - Fatal编程技术网

Arrays 用nan替换缺少的值

Arrays 用nan替换缺少的值,arrays,matlab,vector,replace,nan,Arrays,Matlab,Vector,Replace,Nan,我有以下变量: 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; 注意,这只是一个例子。我得到的真实方程式更复杂。“实”方程不允许NaN位于向量内(因为一个值取决于最后一个值) 但是,如果我不能让Nan通过等式,我可以键入 y2 = y(~isnan(y)).*2; y2 = 0 2 4 6 8 10

我有以下变量:

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;
注意,这只是一个例子。我得到的真实方程式更复杂。“实”方程不允许NaN位于向量内(因为一个值取决于最后一个值)

但是,如果我不能让Nan通过等式,我可以键入

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))

然后用‘x2’和‘y2’作图,但我想找到一种方法,按照上面指定的方法来做

将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

不会简单地
y2=y.*2
做你想做的事吗?“nans”一词不能通过等式传递。我经常使用这样的函数,仅仅删除nans通常是不安全的。在大多数情况下,有必要在函数中处理它。