侯忠生教授无模型自适应控制程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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')

相关文档
最新文档