侯忠生教授无模型自适应控制程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%以下是侯忠生教授无模型自适应控制中的一个简单例子,在网上找了很多参考程序没找到,故而自己简单写了下,运行没问题,欢迎探讨。
clc,clear
for k=1:1000
if k<=300
ys(k)=0.5*(-1)^round(k/100);
elseif 300 ys(k)=0.5*sin(k*pi/100)+0.3*cos(k*pi/50); else ys(k)=0.5*(-1)^round(k/100); end end plot(1:1000,ys) ylim([-1.5,1.5]) hold on u(1:2)=0;y(1)=-1;y(2)=1;fai(1)=2; rou=0.6;eta=1;epsilion=10^-5; lambda=2;mu=1; for k=2:999 if k==2 delta_u=0; else delta_u=u(k-1)-u(k-2); end fai(k)=fai(k-1)+eta*delta_u/(mu+delta_u^2)*(y(k)-y(k-1)-fai(k-1)*delta_ u); if abs(fai(k))<=epsilion | abs(delta_u)<=epsilion | sign(fai(k))~=sign(fai(1)) fai(k)=fai(1); end u(k)=u(k-1)+rou*fai(k)/(lambda+abs(fai(k))^2)*(ys(k+1)-y(k)); if k<=500 y(k+1)=y(k)/(1+y(k)^2)+u(k)^3; else k>500 y(k+1)=(y(k)*y(k-1)*y(k-2)*u(k-1)*(y(k-2)-1)+round(k/100)*u(k))/(1+y(k-1)^2+y(k-2)^2); end end plot(1:1000,y,'r') ylim([-1.5,1.5]) % plot(1:999,u,'r') % % plot(1:999,fai,'r')