⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exm041022_2.m

📁 好多m文件
💻 M
字号:
%exm041022_2.m   		利用伪线性和fminsearch混合法进行非线性参数估计
k_noise=0.3;				%控制噪声水平
[x,y,STDY]=xydata(k_noise);		%运行仿真数据产生程序,产生数据
a0=[1 2]';					%非线性参数的初试猜测
options=optimset('fminsearch');%这步在MATLAB6.0版中是必须的
options.TolX=0.001;		%控制被估参数的迭代精度
options.Display='off';	%避免显示收敛信息
%下面是伪线性和fminsearch交互使用的迭代循环
while 1		
   Mb=exp(-x*a0');		%利用初试猜测a0,构成线性估计的系数矩阵。
   b=Mb\y;					%线性最小二乘求线性参数b
   a=fminsearch(@twoexps2,a0,options,x,y,b);	%利用b估计非线性参数
   r=norm(a-a0)/norm(a);%计算非线性参数估计的相对误差
   if r<0.001;break;end	%估计精度控制
   a0=a;
end
chi_est=twoexps2(a,x,y,b)/STDY^2;			%估计参数下的Chi2量计算
freedom=length(x)-length([a;b]);			%自由度
Q=1-chi2cdf(chi_est,freedom);				%适当度
%以下用于绘图
y_est=b(1)*exp(-a(1)*x)+b(2)*exp(-a(2)*x);
ych='y_e_s_t=';			%注意:该格式使图形中est三个字母成为下标
b1=num2str(b(1));b2=num2str(b(2));a1=num2str(a(1));a2=num2str(a(2));
char_y_est=[ych ,b1,'*exp(-',a1,'*x) + ',b2,'*exp(-',a2,'*x)'];
plot(x,y,'b+');hold on;plot(x,y_est,'r');hold off;axis([0,4,0,16])
text(0.4,14,'y=3*exp(-0.4*x)+12*exp(-3.2*x)');text(0.4,12,char_y_est)
text(2.5,9,['chi2=' , num2str(chi_est)])
text(2.5,7,['freedom=' , num2str(freedom)])
text(2.5,5,['Q=' , num2str(Q)])

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -