采用最小二乘法对一对数据进行数据拟合,新手可能采用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

可以用来分析拟合数据函数的好坏。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐