clc
clear all
A=[0 2;2 1];
B=[1 0.5;0 1];
C=[1 0;-0.5 1];
D=[1 0.5;0 1];
L=[1 -1;0 1];
L1=[1 0.5;0 1];%0.75 -0.5;0.5 1
%---------期望軌跡
t=0:0.1:2;%1*21
yd1=5*sin(5*t);
yd2=4*t.^3;
yd=ones(2,21);
yd(1,:)=yd1;
yd(2,:)=yd2;
%---------------
alfa=0.1;%0.55
beta=1;%1.1
deta=0.75;%1上限2
% uk=yd;
% uk=[1;0.6]*ones(1,21);
uk=[rand();rand()]*ones(1,21);
x0=[0;0];
% x0=[rand()/5;rand()/5];%初始狀態不為0
%--------------
E=10;
k=0;
ky1=0*ones(20,21);
ky2=0*ones(20,21);
Ey1=0*ones(1,20);
Ey2=0*ones(1,20);
%--------------
while E>0.01
[yk,x]=lsim(A,B,C,D,uk,t,x0);
ek=yd-yk';
%------------向量法9代
for i=1:1:21
x=(uk(:,i)'*L*ek(:,i))/(uk(:,i)'*uk(:,i));
x1=alfa*(1-exp(-1*beta*norm(ek(:,i))));
uk(:,i)=uk(:,i)+deta*L*ek(:,i)-1*x1*x*uk(:,i);
end
%---------------
%--------最佳p行增益12代
% for i=1:1:21
% uk(:,i)=uk(:,i)+L1*ek(:,i);
% end
%---------------
uk(1,1)=0;
uk(2,1)=0;
E1=abs(ek);
E=(sum(E1(1,:))+sum(E1(2,:)))/42;
k=k+1
ky1(k,:)=yk(:,1)';
ky2(k,:)=yk(:,2)';
Ey1(1,k)=max(E1(1,:));
Ey2(1,k)=max(E1(2,:));
end
figure(1)
plot(t,ky1(k,:),'-*k',t,yd(1,:),'-or')
title('迭代輸出軌跡')
ylabel('最終輸出')
xlabel('時間t(sec)')
legend('最終輸出','期望軌跡')
hold on
figure(2)
plot(t,ky2(k,:),'-*k',t,yd(2,:),'-or')
title('迭代輸出軌跡')
ylabel('最終輸出')
xlabel('時間t(sec)')
legend('最終輸出','期望軌跡')
hold on
figure(3)
plot(Ey1(1,:))
figure(4)
plot(Ey2(1,:))
figure(5)
% Q1P=[55.3655652171864,51.0626523612082,59.4105513537246,67.0180125476705,63.5715554085943,43.3021783338521,17.9331492215843,1.99245675327982,2.35000939945856,1.40065204570182,0.196572454361754,0.125273035561497];
% Q2P=[8.03732673237568,17.3235644865994,19.7217246620982,20.8777776499298,15.1367789525605,5.81188575159213,0.607041339826431,1.41751527006571,0.621651283827692,0.0427853533442359,0.0894498360651852,0.0303758752491454];
Q1P=[55.3655652171864,2.80531422360282,2.73472592763123,1.55469449034394,0.520187454369368,0.157271201663788,0.126032339250909,0.0802812942874689,0,0,0,0];
Q2P=[8.03732673237568,2.85631446092259,2.08103133903227,0.621281055187382,0.213061448606478,0.0628007093318743,0.0638328196646469,0.0346642915048889,0,0,0,0];
Q1V=[55.3655652171864,13.0984459694631,7.00251668875791,5.96472078426135,1.28003267583032,0.266411647158852,0.276650849715363,0.0408009185834235,0.0160474258135475,0,0,0];
Q2V=[8.03732673237568,8.80847884566152,2.17809627100960,6.99750246839523,2.38622370680552,0.332426264753082,0.319221389379052,0.166032402427817,0.0812722851995673,0,0,0];
k1=1:1:12;
plot(k1,Q1P,'-*k',k1,Q1V,'-or')
title('y1絕對誤差比較')
ylabel('每一代的絕對最大誤差')
xlabel('迭代代數')
legend('最佳化向量算法','向量算法')
hold on
figure(6)
plot(k1,Q2P,'-*k',k1,Q2V,'-or')
title('y2絕對誤差比較')
ylabel('每一代的絕對最大誤差')
xlabel('迭代代數')
legend('最佳化向量算法','向量算法')
hold on
figure(7)
plot(t,ky1(3,:),'-*r',t,ky1(5,:),'-*b',t,ky1(7,:),'-*g',t,yd(1,:),'-ok');
title('迭代輸出軌跡')
ylabel('輸出')
xlabel('時間t(sec)')
legend('第3代輸出','第5代輸出','第7代輸出','期望軌跡')
hold on
figure(8)
plot(t,ky2(2,:),'-*r',t,ky2(4,:),'-*b',t,ky2(6,:),'-*g',t,yd(2,:),'-ok');
title('迭代輸出軌跡')
ylabel('輸出')
xlabel('時間t(sec)')
legend('第2代輸出','第4代輸出','第6代輸出','期望軌跡')
hold on
没有合适的资源?快使用搜索试试~ 我知道了~
ILC.rar_ILC_ilc matlab_iterative learning_matlab ILC
共5个文件
m:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 81 浏览量
2022-09-24
20:05:04
上传
评论
收藏 4KB RAR 举报
温馨提示
簡易的迭代學習程式,方便對迭代學習剛接觸的人使用
资源详情
资源评论
资源推荐
收起资源包目录
ILC.rar (5个子文件)
ilcd.m 717B
ILC_vector.m 3KB
ilcfuzzy.m 1KB
ILC_vectornonlinear.m 2KB
ilcp.m 671B
共 5 条
- 1
我虽横行却不霸道
- 粉丝: 72
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0