如果你觉得线性回归不行的话可以自己设计函数拟合
比如你想用 z=a+b*x^2+c/y 具体函数你自己定
对回归模型建立M文件model.m如下:
代码:
function yy=model(beta0,X)
a=beta0(1);
b=beta0(2);
c=beta0(3);
x1=X(:,1);
x2=X(:,2);
yy=a+b.*x1+c./x2 ;
这样调用
代码:
x=[-2005.18774,-176.903191,1292.067478,859.336087,771.7266316,327.546568,-1478.3107] ;
y=[-465.189718,-41.0403195,544.4413107,479.943397,610.9354918,317.374685,-1432.4029] ;
z=[-6039.86603,-6378.41532,-6225.05472,-6304.62979,-6304.62979,-6364.6799,-6039.8663] ;
X=[x;y]';
Y=z';
beta0=[0.50 1 1]; %设定初始值
[fit,r,J] = nlinfit(X,Y,'model',beta0)
结果如下
HTML 代码:
fit =
1.0e+003 *
-6.2252 -0.0001 6.4908
r =
6.6350
-12.0559
112.3579
-10.3944
-15.9118
-128.4641
47.8333
J =
1.0e+003 *
0.0010 -2.0052 -0.0000
0.0010 -0.1769 -0.0000
0.0010 1.2921 0.0000
0.0010 0.8593 0.0000
0.0010 0.7717 0.0000
0.0010 0.3275 0.0000
0.0010 -1.4783 -0.0000
即
z=1.0e+003*(-6.2252-0.0001*x+6.4908/y)
在x[100 200 ] y[100 200]积分
代码:
jifen=dblquad(@(x,y)1.0e+003*(-6.2252-0.0001.*x+6.4908./y),100,200,100,200)
结果如下
你自己根据实际设计函数就行了