您如何处理需要单调增加的数据才能使用插值库和其他函数,而实际上它不是单调增加的?
处理非单调递增的数据
计算科学
数据管理
2021-12-08 16:15:05
3个回答
如果您想在不更改任何其他内容的情况下移除非单调结构,则可以进行等渗最小二乘拟合:
我糊涂了。数据不需要是单调的插值。(是的,有单调曲线拟合工具,但这似乎不是你所要求的。)例如(在 matlab 中)
x = 0:20;
y = sin(x);
xi = 0:.01:20;
yi = spline(x,y,xi);
plot(x,y,'o',xi,yi,'r-')

也许您有一个问题,即数据来自非单值关系。例如,位于圆周周围的点。
问题是在给定 x 值的任何函数都必须产生单个预测。但如果你的关系不是单一价值的,你能做什么?
一般的想法是创建第三个变量,它允许您以参数方式预测 x(t) 和 y(t)。您确实需要第三条信息,因为点的顺序至关重要。通常使用点之间的累积弦弧长度作为参数 t。当然,在圆的情况下,可以使用极角作为参数,但对于一般问题,累积线性弧长效果很好。
x = rand(10,1);
y = rand(10,1);
t = [0;cumsum(diff(x).^2 + diff(y).^2)];
ti = linspace(0,t(end),1000);
xi = spline(t,x,ti);
yi = spline(t,y,ti);
plot(x,y,'o',xi,yi,'r-')

您可以使用参数插值方法通过一系列给定数据点拟合曲线在哪里不一定要小于: http://www.ams.org/journals/mcom/1997-66-217/S0025-5718-97-00796-5/
其它你可能感兴趣的问题