代码
x=[200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000];
y=[01 025 049 065 07 091 115 126 137 146 152 160 165 167 168 168 169 169 171];
cftool(x,y);
拟合方式一:指数拟合
General model Power2:
f(x) = ax^b+c
Coefficients (with 95% confidence bounds):
a = -4495 (-570, 4801)
b = -002049 (-0297, 02561)
c = 403 (-490, 5706)
Goodness of fit:
SSE: 01527
R-square: 09708
Adjusted R-square: 09672
RMSE: 00977
拟合方式二:最高三次多项式
Linear model Poly3:
f(x) = p1x^3 + p2x^2 + p3x + p4
Coefficients (with 95% confidence bounds):
p1 = -1208e-011 (-1778e-010, 1536e-010)
p2 = -6613e-007 (-1214e-006, -1088e-007)
p3 = 0002397 (0001855, 000294)
p4 = -0388 (-05376, -02384)
Goodness of fit:
SSE: 002784
R-square: 09947
Adjusted R-square: 09936
RMSE: 004308
拟合方式三:最高四次多项式
Linear model Poly4:
f(x) = p1x^4 + p2x^3 + p3x^2 + p4x + p5
Coefficients (with 95% confidence bounds):
p1 = 4099e-013 (1256e-013, 6942e-013)
p2 = -1815e-009 (-3073e-009, -5575e-010)
p3 = 2001e-006 (1018e-007, 39e-006)
p4 = 00009045 (-00002188, 0002028)
p5 = -01391 (-03494, 007117)
Goodness of fit:
SSE: 001654
R-square: 09968
Adjusted R-square: 09959
RMSE: 003437
小结
实际上多项式拟合经度(SSE,RMSE)四次高于三次,因为四次包含了三次,需要根据物理模型来确定选择多项式最高次数。
指数模型精度低于三次多项式。
本文希望你能认识一个新的有用的函数,曲线拟合工具箱
希望你学习进步。
1 多项式函数拟合:a=polyfit(xdata,ydata,n)其中n表示多项式的最高阶数,xdata,
ydata为将要拟合的数据,它是用数组的方式输入.
输出参数a为拟合多项式 的系数
多项式在x处的值y可用下面程序计算.
y=polyval(a,x)
2 一般的曲线拟合:p=curvefit(‘Fun’,p0,
xdata,ydata)
其中Fun表示函数Fun(p,data)的M函数文件,
p0表示函数的初值.curvefit()命令的求解问题形式是
若要求解点x处的函数值可用程序f=Fun(p,x)计算.
例如已知函数形式 ,并且已知数据点 要确定四个未知参数a,b,c,d.
使用curvefit命令,数据输入 ;初值输 ;并且建立函数 的M文件(Fun.m).若定义 ,则输出
又如引例的求解,MATLAB程序:
t=[l:16]; %数据输人
y=[ 4 6.4 8 8.4 9.28 9.5 9.7 9.86 10.2 10.32 10.42 10.5 10.55 10.58 10.6] ;
plot(t,y,’o’) %画散点图
p=polyfit(t,y,2) (二次多项式拟合)计算结果:p=-00445 10711 43252 %二次多项式的系数
由此得到某化合物的浓度y与时间t的拟合函数。
程序改成如下:
x=0:pi/20:pi/2;
y=sin(x);
a=polyfit(x,y,5);
x1=0:pi/30:pi2;
y1=sin(x1);
y2=a(1)x1^5+a(2)x1^4+ a(3)x1^3+ a(4)x1^2+ a(5)x1+a(6) ;
plot(x1,y1,'b-',x1,y2,'r')
set(gca,'Xtick',[0:05:7])%设置坐标轴
legend('原曲线','拟合曲线')
grid on
axis([0,7,-12,4])
第二问。程序改成如下:
x=0:pi/20:pi/2;
y=sin(x);
a=polyfit(x,y,5);
x2=0:pi/20:pi/2;
y2=a(1)x2^5+ a(2)x2^4+ a(3)x2^3+ a(4)x2^2+ a(5)x2+a(6);%把x1该成x2
plot(x,y,'',x2,y2,'-')
以上就是关于求matlab高手帮忙编写一个函数拟合程序。估计可以得到一个幂函数或者指数函数。全部的内容,包括:求matlab高手帮忙编写一个函数拟合程序。估计可以得到一个幂函数或者指数函数。、用MATLAB怎么实现曲线拟合、matlab数据拟合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)