多元非线性函数拟合(Matlab_nlinfit函数)
Process
前两天练题的时候要用到多元非线性拟合,但是在网上找到的大多都是一些求问的帖子,真正有用的回答却不多,这里汇总一下与大家分享。
- 首先导入数据(参数和结果)
- 确定自己要拟合的函数(自己画个散点图预估一下,或者是使用SPSS的曲线估算,但是没自己画图看的舒服)
- 确定要拟合的系数的预估值(全部写零也行,但是你得有个大概想法,比如你图像是幂次为负的幂函数,那么你就写个负值,比如-1)
- 套用nlinfit函数,得出的bate矩阵就是你要拟合的系数矩阵。
- covB回归系数的协方差
mse均方误差
beta参数最优值
r各点处的拟合残差
J雅各比矩阵的数值
ErrorModelInfo错误模型信息
Code
clear all;
a=xlsread("C:\Users\123\Desktop\数据.xlsx","a");%导入表a
b=xlsread("C:\Users\123\Desktop\数据.xlsx","b");%导入表b
s=a(:, 6);%y值(结果矩阵)
myfunc=inline('beta(1).*x(:,1).^(beta(2))+beta(3).*x(:,2).^(beta(4))+beta(5).*x(:,3).^(beta(6))+beta(7).*x(:,4).^(beta(8))+beta(9)','beta','x');%内联函数(beta是函数自带的代表待确定的系数)
beta0 = [1, -2 ,1, -2 ,1, -2 ,1, -2 ,60];%待定系数的预估值
[beta,R,J,CovB,MSE,ErrorModelInfo]= nlinfit(b, s, myfunc,beta0);
beta