%% 非线性函数-最小二乘法拟合 马玉华 2020.9.11
% 已知一组自变量数据x和函数值y,以及函数形式y=f(c,x),但是表达式的参数c不知道。对数据xy进行拟合,求解参数c
% 基本格式 c=lsqcurvefit(fun,c0,x,y)
% 完整格式 [c,Q]=lsqcurvefit(fun,c0,x,y,lb,ub),c0为需要设置的迭代初值,x、y为已知数据(矩阵,x为多元则使用多维数组),lb、ub为参数c的上下限(可不写)。c0、x、y、lb、ub都是向量
% 返回拟合参数c,误差平方和Q
% 示例1:拟合 y=ax^2+be^x
x = [0,1,2,3,4]; % 一元自变量数据
y = [0,5,14,27,44]; % 函数值数据
fun = @(c,x) c(1)*x.^2 + c(2)*exp(x) % 函数表达式
[c,Q]=lsqcurvefit(fun,[1,1],x,y) % (函数fun,参数初值[1,1],数据x,数据y)
输出结果:
fun =
@(c,x)c(1)*x.^2+c(2)*exp(x)
c =
3.7363 -0.2896
Q =
6.3743
可参考leastsq最小二乘法拟合和最小二乘法拟合、例二:拟合二次函数