目前我有一个一维向量,绘制后得到下图中的蓝色线条。现在我想根据我已有的向量数据值来扩展这条线(如红色线条所示)。我知道可以使用简单的机器学习来解决这个问题。但是MATLAB中是否有内置的库函数也可以实现这一功能?
将数据扩展的问题到底应该如何称呼?这不是插值,我确定外推也不是一个概念。如果有任何问题可以澄清这个问题,请随时提问。
回答:
你要找的是外推。因为你想要估计的曲线的最后部分相当线性,你可以使用线性外推。
假设我们的函数是f(i)=i,对于i=1,…,50,并添加了一些随机噪声。
signal=(1:50)+rand(1,50);
现在假设我们想估计接下来的10个样本,即i=51,…,60。通过线性外推,我们可以通过以下循环来添加这10个样本:
for i=51:60 signal(i)=signal(i-2)+((i-(i-2))/((i-1)-(i-2)))*(signal(i-1)-signal(i-2));end
原始公式来自这里,其中x_star=i,x_{k-1}=i-2,x_{k}=i-1,y(x_star)是我们要估计的值,y_{k-1}=signal(i-2),y_{k}=signal(i-1)。显然,你应该根据你使用的函数重新调整这个公式。基本上,你是使用前两个值来评估新值。
现在这些新估计的10个样本已经被添加,signal
的形式为