
我给你个最小二乘拟合的例子自己体会一下:\x0d\x0a下面给定的是乌鲁木齐最近1个月早晨7:00左右(新疆时间)的天气预报所得到的温度数据表,按照数据找出任意次曲线拟合方程和它的图像。\x0d\x0a(2008年10月26~11月26)\x0d\x0a天数 1 2 3 4 5 6 7 8 9 10\x0d\x0a温度 9 10 11 12 13 14 13 12 11 9\x0d\x0a天数 11 12 13 14 15 16 17 18 19 20\x0d\x0a温度 10 11 12 13 14 12 11 10 9 8\x0d\x0a天数 21 22 23 24 25 26 27 28 29 30\x0d\x0a温度 7 8 9 11 9 7 6 5 3 1\x0d\x0a\x0d\x0a下面应用Matlab编程对上述数据进行最小二乘拟合\x0d\x0aMatlab程序代码:\x0d\x0ax=[1:1:30]\x0d\x0ay=[9,10,11,12,13,14,13,12,11,9,10,11,12,13,14,12,11,10,9,8,7,8,9,11,9,7,6,5,3,1]\x0d\x0aa1=polyfit(x,y,3)%三次
多项式拟合%\x0d\x0aa2= polyfit(x,y,9) %九次多项式拟合%\x0d\x0aa3= polyfit(x,y,15)%十五次多项式拟合%\x0d\x0ab1= polyval(a1,x)\x0d\x0ab2= polyval(a2,x)\x0d\x0ab3= polyval(a3,x)\x0d\x0ar1= sum((y-b1).^2) %三次多项式误差
平方和%\x0d\x0ar2= sum((y-b2).^2) %九次次多项式误差平方和%\x0d\x0ar3= sum((y-b3).^2) %十五次多项式误差平方和%\x0d\x0aplot(x,y,'*') %用*
画出x,y图像%\x0d\x0ahold on\x0d\x0aplot(x,b1, 'r') %用红色线画出x,b1图像%\x0d\x0ahold on\x0d\x0aplot(x,b2, 'g') %用绿色线画出x,b2图像%\x0d\x0ahold on\x0d\x0aplot(x,b3, 'b:o') %用蓝色o线画出x,b3图像%
用polyfit()语句可以,
polyfit(x,y,拟合次数n)
x,y是你的数据,n是你要进行几次拟合,填1的话为一次也就是最小二乘法拟合
你可以这样写
x=[0.250.50.7511.522.533.544.55678910111213141516]
y=[3068758282776868585150413835282518151210774]
p=polyfit(x,y,1)
plot(x,y,'b',x,polyval(p,x),'r') %如果作图的话,蓝线为原数据,红线为拟合数据。
先画散点图大致确定曲线类型。然后用polyfit,polyval函数(这两个是多项式拟合的),比如指数型,取对数就可以用。函数用法百度下就好。
评论列表(0条)