3、,为了解决这个问题,把它转化为递推算法:若令,则加权递推最小二乘(RWLS):e(k)为有色噪声,v(k)为白噪声。。取,当噪声为有色噪声时,采用增广最小二乘法:其思路采用CARMA模型。在实际应用中噪声v(k)有两种形式:1matlab最小二乘法拟合[a,Jm]=lsqcurvefit(fun,a0,x,y);fun不支持句柄函数a0为最优化的初始值,fun为数据原型函数。x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub);lb≤x≤ub[x,norm,res,ef,out
4、,lam,jac]=lsqcurvefit(@F,x0,t,y,v1,v2,opt,P1,P2,...)其中输出变量的含义为:1)x:最优解2)norm:误差的平方和3)res:误差向量4)ef:程序结束时的状态指示:·>0:收敛·0:函数调用次数或迭代次数达到最大值(该值在options中指定)·<0:不收敛5)out:包含以下数据的一个结构变量·funcCount函数调用次数·iterations实际迭代次数·cgiterations实际PCG迭代次数(大规模计算用)·algorithm实际使用的算
5、法·stepsize最后迭代步长(中等规模计算用)·firstorderopt一阶最优条件满足的情况(大规模计算用)6)lam:上下界所对应的Lagrange乘子7)jac:结果(x点)处的雅可比矩阵输入参数其中输入变量的含义为:·x0为初始解(缺省时程序自动取x0=0)·t,y:拟合数据·v1,v2:参数待求x的上下界·options:包含算法控制参数的结构LineSearchType线搜索方法(‘cubicpoly’,’quadcubic’(缺省值))opt=optimset(oldopts,new
6、opts)可以设定的参数比较多,对lsqnonlin和lsqcurvefit,常用的有以下一些参数:Diagnostics是否显示诊断信息('on'或'off)Display显示信息的级别('off','iter','final,'notify)LargeScale是否采用大规模算法('on'或'off)缺省值为onMaxIter最大迭代次数TolFun函数计算的误差限TolX决策变量的误差限Jacobian目标函数是否采用分析Jacobi矩阵('on','off)MaxFunEvals目标函数最大调用
7、次数LevenbergMarquardt搜索方向选用LM法(‘on’),GN法(‘off’,缺省值)LineSearchType线搜索方法(‘cubicpoly’,’quadcubic’(缺省值))LargeScale:[on
8、off]LevenbergMarquardt:[{on}
9、off]例子1用matlab实现对1首先编写m文件functionf=lsq(x,xdata)f=x(1)*sin(xdata)+0.5*x(2)*sin(2*xdata)./(1-x(2)^2*sin(xdata).^2
10、).^0.52利用lsqcurvefit函数调用m文件m=4;k=0.4o=[0:0.01*pi:2*pi];xdata=o;ydata=m*sin(o)+0.5*k*sin(2*o)./(1-(k^2*sin(o).^2)).^0.5;x0=[0;0];[x,resnorm]=lsqcurvefit(@lsq,x0,xdata,ydata)结果得到:x(1)=4.0000;x(2)=0.4000;resnorm=6.3377e-0162n