最近要用matlab处理一批数据 ,作非线性拟合。matlab拟合数据有工具箱cftool (支持多项式 指数 高斯多种函数拟合.)
当x-y有对应关系时,即x,y都是已知数据集,用 polyfit函数 可以作多项式拟合 polyfit(x,y,n) n表示多项式次数
实际中往往自变量和因变量 有参数待定 需要用模型反求待定参数, 使得在此模型下,得到最优参数,则可以尝试nlinfit
nlinfit支持多个自变量 y=f(x1,x2,----)
自定义拟合函数
function rs=nonfit(w,r)
%w为待定系数 r为传入自变量x ,這里有 五个自变量 y=f(x1,x2,x3,x4,x5)
rs=calKBS(w(1).*r(:,1)+w(2).*r(:,2)+w(3).*r(:,3)+w(4).*r(:,4)+(1-w(1)-w(2)-w(3)-w(4)).*r(:,5))./w(5);end
% 函数调用 w0为初始值
result= nlinfit(x(:,:,20);,density,@nonfit,w0);
附 squeeze函数可以去除矩阵多余维数 如 3*1*6*1*7维度数据 变为3*6*7