采用最小二乘法对一对数据进行数据拟合,新手可能采用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
可以用来分析拟合数据函数的好坏。