如何分段线性逼近x和y点?
41视图(30天)
显示旧的评论
我有x和y点如下:
x = (20 60 240 480 1440 2880);
y = (0.0278 0.1626 1.8126 4.006 18.2491 - 44.4084)
我想做分段线性近似直线的方程。我怎么继续?我用polyfit功能和线的斜率和拦截。但是,我不确定它是否正确?例如,如果x的值是< 60岁,我得到一个负值的y从polyfit定义功能。
0评论
接受的答案
约翰D 'Errico
2022年11月23日
编辑:约翰D 'Errico
2022年11月23日
x = (20 60 240 480 1440 2880);
y = (0.0278 0.1626 1.8126 4.006 18.2491 - 44.4084);
情节(x, y,“啊——”)
你只有6个数据点。希望任何合理的分段线性近似这是非常希望在一个明星。
多项式(直线)适合当然会produuce亚都负截距。
polyfit (x, y, 1)
所以在x = = 0,将预测-1.8417。
但这只是意味着一条直线模型可能有一些缺乏配合。由于数据确实有一定的曲率,一个线性将没有意义。甚至二次匹配失败预测正值x = = 0。
格式长g
polyfit (x, y, 2)
你没有足够的数据来预测价值。但我要指出的正曲率数据将使任何线性适合在x - y轴截距= = 0。
你可能做的是符合二次多项式,没有一个常数项。这样的模型形式
y = a1 * x ^ 2 + a2 * x
显然,当x = = 0时,该模型将永远完全穿过零。它会有适合您的有限的数据正曲率。
%我可以使用反斜杠来估计模型,但也许曲线拟合
%工具箱可能是一个更好的主意,因为它是更容易使用。
% P2 = [x '。^ 2,x '] \ y ';%这将符合二次模型,没有常数项
mdl2 = fittype (“a2 * x。^ 2 + a1 * x ',“它”,“x”)
P2 =适合(x, y, mdl2)
xpred = linspace(最小(x)最大(x));
ypred2 = P2 (xpred);
情节(x, y,“波”xpred ypred2,“- r”)
我不知道噪音是多少您的数据。但另一个想法是尝试一立方模型,再没有常数项。
mdl3 = fittype (“a3 * x。^ 3 + a2 * x。^ 2 + a1 * x ',“它”,“x”)
P3 =适合(x, y, mdl3)
ypred3 = P3 (xpred);
情节(x, y,“波”xpred ypred3,“- r”)
我甚至不认为你的数据证明,曲线拟合,但它似乎适合您的数据。
0评论
更多的答案(2)
图像分析
2022年11月23日
我真的不明白在数据拟合两行只有6分。有这么几点基本上没有信心行将像他们会如果你有几百个点。所以,为什么要找麻烦呢?你打算如何处理这些信息?
尽管如此,你可以试试我的分段拟合的演示,附呈。