用matlab实现最小二乘递推算法辨识系统参数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

自动化专业综合设计报告

设计题目:最小二乘递推算法辨识系统参数所在实验室:自动化系统仿真实验室

指导教师:

学生姓名

班级计082-2 班

学号

撰写时间:2012-3-1 成绩评定:

一.设计目的

1、学会用Matlab实现最小二乘法辨识系统参数。

2、进一步熟悉Matlab的界面及基本操作;

3、了解并掌握Matlab中一些函数的作用与使用;

二.设计要求

最小二乘递推算法辨识系统参数,利用matlab编程实现,设初始参数为零。z(k)-1.5*z(k-1)+0.7*z(k-2)=1*u(k-1)+0.5*u(k-2)+v(k);

选择如下形式的辨识模型:

z(k)+a1*z(k-1)+a2*z(k-2)=b1*u(k-1)+b2*u(k-2)+v(k);

三.实验程序

m= 3;

N=100;

uk=rand(1,N);

for i=1:N

uk(i)=uk(i)*(-1)^(i-1);

end

yk=zeros(1,N);

for k=3:N

yk(k)=1.5*yk(k-1)-0.7*yk(k-2)+uk(k-1)+0.5*uk(k-2);

end

%j=100;kn=0;

%y=yk(m:j)';

%psi=[yk(m-1:j-1);yk(m-2:j-2);uk(m-1:j-1);uk(m-2:j-2)]';

%pn=inv(psi'*psi);

%theta=(inv(psi'*psi)*psi'*y);

theta=[0;0;0;0];

pn=10^6*eye(4);

for t=3:N

ps=([yk(t-1);yk(t-2);uk(t-1);uk(t-2)]);

pn=pn-pn*ps*ps'*pn*(inv(1+ps'*pn*ps));

theta=theta+pn*ps*(yk(t)-ps'*theta);

thet=theta';

a1=thet(1);

a2=thet(2);

b1=thet(3);

b2=thet(4);

a1t(t)=a1;

a2t(t)=a2;b1t(t)=b1;b2t(t)=b2;

end

t=1:N;

plot(t,a1t(t),t,a2t(t),t,b1t(t),t,b2t(t));

text(20,1.47,'a1');

text(20,-0.67,'a2');

text(20,0.97,'b1');

text(20,0.47,'b2');

四.设计实验结果及分析

实验结果图:

仿真结果表明,大约递推到第十步时,参数辨识的结果基本到稳态状态,即a1= 1.5999,b1=1,c1=0.5,d1=-0.7。

五.设计感受

这周的课程设计告一段落了,时间短暂,意义重大。通过这次次练习的机会,重新把matlab课本看了一遍,另外学习了系统辨识的有关内容,收获颇丰。对matlab的使用更加纯熟,也锻炼了自己在课本中搜索信息和知识的能力。在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。同时我也进一步认识了matlab软件强大的功能。在以后的学习和工作中必定有很大的用处。

相关文档
最新文档