采用最小二乘法对一对数据进行数据拟合,新手可能采用command 窗口输入代码的形式,再次我特别希望各位朋友能更快捷一下。
不要总说自己是新手,不会,都是借口,在此我希望大家几十秒钟搞定的事,不要浪费时间写代码了。
首先用大家常用的写代码的方式:
序号x y z 1426.62790.0662.897867 2465.3250.1231.621569 3504.07920.1022.429227 4419.18640.0573.50554 5464.20190.1031.153921 6383.09930.0572.297169 7416.31440.0493.058917 8464.27620.0881.369858 9453.09490.093.028741 10376.90570.0494.047241 11409.04940.0454.838143 12449.43630.0794.120973 13372.14320.0413.604795 14389.09110.0852.048922 15446.70590.0573.372603 16347.58480.034.643016 17379.37640.0414.74171 18453.67190.0821.841441 19388.16940.0512.293532 20444.94460.0763.541803 21437.40850.0563.984765 22408.96020.0782.291967 23393.76060.0592.910391 24443.11920.0633.080523 25514.19630.1531.314749 26377.81190.0413.967584 27421.52480.0633.005718 28421.52480.0633.005718 29421.52480.0633.005718 30421.52480.0633.005718 31421.52480.0633.005718 32421.52480.0633.005718 33421.52480.0633.005718 34421.52480.0633.005718 35421.52480.0633.005718 36421.52480.0633.005718 37416.12290.1111.281646 38369.0190.042.861201 39362.20080.0363.060995 40417.14250.0383.69532
现在要对其求x与y 的关系:
clear all >> p=polyfit(x,y,2); >> x1=300:10:600; >> y1=polyval(p,x1); >> plot(x,y,'*r',x1,y1,'-b') >> plot(x,'DisplayName','x','YDataSource','x');figure(gcf)
下面重点介绍下一个方法:
在命令行输入: cftool 弹出下面的窗口:
在X data 选择x变量,Y data选择y变量,线性拟合选择2次,出现下面的窗口:
也可以选择其他的函数拟合,一般常用的是高斯拟合:
得到的不仅仅是想要的函数表达式,还有Goodness of fit:
SSE: 0.008294
R-square: 0.666
Adjusted R-square: 0.6169
RMSE: 0.01562
可以用来分析拟合数据函数的好坏。