采用最小二乘法对一对数据进行数据拟合,新手可能采用command 窗口输入代码的形式,再次我特别希望各位朋友能更快捷一下。
不要总说自己是新手,不会,都是借口,在此我希望大家几十秒钟搞定的事,不要浪费时间写代码了。
首先用大家常用的写代码的方式:
序号 x y z 1 426.6279 0.066 2.897867 2 465.325 0.123 1.621569 3 504.0792 0.102 2.429227 4 419.1864 0.057 3.50554 5 464.2019 0.103 1.153921 6 383.0993 0.057 2.297169 7 416.3144 0.049 3.058917 8 464.2762 0.088 1.369858 9 453.0949 0.09 3.028741 10 376.9057 0.049 4.047241 11 409.0494 0.045 4.838143 12 449.4363 0.079 4.120973 13 372.1432 0.041 3.604795 14 389.0911 0.085 2.048922 15 446.7059 0.057 3.372603 16 347.5848 0.03 4.643016 17 379.3764 0.041 4.74171 18 453.6719 0.082 1.841441 19 388.1694 0.051 2.293532 20 444.9446 0.076 3.541803 21 437.4085 0.056 3.984765 22 408.9602 0.078 2.291967 23 393.7606 0.059 2.910391 24 443.1192 0.063 3.080523 25 514.1963 0.153 1.314749 26 377.8119 0.041 3.967584 27 421.5248 0.063 3.005718 28 421.5248 0.063 3.005718 29 421.5248 0.063 3.005718 30 421.5248 0.063 3.005718 31 421.5248 0.063 3.005718 32 421.5248 0.063 3.005718 33 421.5248 0.063 3.005718 34 421.5248 0.063 3.005718 35 421.5248 0.063 3.005718 36 421.5248 0.063 3.005718 37 416.1229 0.111 1.281646 38 369.019 0.04 2.861201 39 362.2008 0.036 3.060995 40 417.1425 0.038 3.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
可以用来分析拟合数据函数的好坏。
转载于:https://blog.51cto.com/3754839/1401940