資源簡介
其中的程序已經驗證,希望對大家有幫助~~~~~~~~~~~~~~~~~~~~

代碼片段和文件信息
clear?all;
clear?all;
xite=0.25;
alfa=0.05;
S=2;?%?Signal?type
IN=4;H=5;Out=3;?%NN?stucture
if?S==1?%Step?Signal
wi=[-0.6394?-0.2696?-0.3756?-0.7023;
????-0.8603?-0.2013?-0.5024?-0.2596;
????-1.0749??0.5543?-1.6820?-0.5437;
???-0.3625??0.0724?-0.6463?-0.2859;
?????0.1425??0.0279?-0.5406?-0.7660];
%wi=0.50*rands(HIN);
wi_1=wi;wi_2=wi;wi_3=wi;
wo=[0.7576?0.2616?0.5820?-0.1416?-0.1325;
???-0.1146?0.2949?0.8352?0.2205??0.4508;
????0.7202?0.4566?0.7672?0.4962??0.36321];
%wo=0.50*rands(OutH);
wo_1=wo;wo_2=wo;wo_3=wo;
end
if?S==2?%Step?Signal
wi=[-0.2846??0.2193?-0.5097?-1.0668;
????-0.7484?-0.1210?-0.4708??0.0988;
????-0.7176??0.8297?-1.6000??0.2049;
????-0.0858??0.1925?-0.6346??0.0347;
?????0.4358??0.2369??0.4564?-0.1324];
%wi=0.50*rands(HIN);
wi_1=wi;wi_2=wi;wi_3=wi;
wo=[1.0438?0.5478?0.8682?0.1446?0.1537;
????0.1716?0.5811?1.1214?0.5067?0.7370;
????1.0063?0.7428?1.0534?0.7824?0.6494];
%wo=0.50*rands(OutH);
wo_1=wo;wo_2=wo;wo_3=wo;
end
x=[000];
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
y_1=0;y_2=0;y_3=0;
oh=zeros(H1);?%Output?from?NN?middle?layer
l=oh;?%input?to?NN?middle?layer
error_2=0;
error_1=0;
ts=0.001;
for?k=1:1:6000
time(k)=k*ts;
%end
if?S==1?
rin(k)=1.0;
elseif?S==2
rin(k)=sin(1*2*pi*k*ts);????%參數是否正確????
end
%Unlinear?model
a(k)=1.2*(1-0.8*exp(-0.1*k));
yout(k)=a(k)*y_1/(1+y_1^2)+u_1;????%其中y_1和u_1是0啊,,,這有什么意義
error(k)=rin(k)-yout(k);
xi=[rin(k)yout(k)error(k)1];
x(1)=error(k)-error_1;
x(2)=error(k);
x(3)=error(k)-2*error_1+error_2;????%error_1-2都是0
epid=[x(1);x(2);x(3)];
I=xi*wi‘;
for?j=1:1:H
oh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j)));??%Middle?layer?把I變成了l
end
K=wo*oh;???%Output?layer
for?l=1:1:Out
K(l)=exp(K(l))/(exp(K(l))+exp(-K(l)));???%getting?kpkikd?
end
kp(k)=K(1);ki(k)=K(2);kd(k)=K(3);
Kpid=[kp(k)ki(k)kd(k)];
du(k)=Kpid*epid;
u(k)=u_1+du(k);???????????????????????%u(k)是階躍信號
if?u(k)>=10??%Restricting?the?output?of?controller
u(k)=10;
end
if?u(k)<=-10
u(k)=-10;
end
dyu(k)=sign((yout(k)-y_1)/(u(k)-u_1+0.0000001));
%Output?layer
for?j=1:1:Out
dK(j)=2/(exp(K(j))+exp(-K(j)))^2
end
for?l=1:1:Out
delta3(l)=error(k)*dyu(k)*epid(l)*dK(l);
end
for?l=1:1:Out
for?i=1:1:H
d_wo=xite*delta3(l)*oh(i)+alfa*(wo_1-wo_2);
end
end
wo=wo_1+d_wo+alfa*(wo_1-wo_2);
%Hidden?layer
for?i=1:1:H
dO(i)=4/(exp(I(i))+exp(I(i)))^2;
end
segma=delta3*wo;
for?i=1:1:H
delta2(i)=dO(i)*segma(i);
end
d_wi=xite*delta2‘*xi;
wi=wi_1+d_wi+alfa*(wi_1-wi_2);
%Parameters?Update
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_2=y_1;y_1=yout(k);
wo_3=wo_2;
wo_2=wo_1;
wo_1=wo;
wi_3=wi_2;
wi_2=wi_1;
wi_1=wi;
error_2=error_1;
error_1=error(k);
end
figure(1);
plot(timerin‘r‘timeyout‘b‘);
xlabel(‘time(s)‘);ylabel(‘rinyout‘);
figure(2);
plot(timeerror‘r‘);
xlabel(‘time(s)‘);ylabel(‘error‘);
figure(3);
plot(timeu‘r‘);
xlabel(‘time(s)‘);ylabel(‘u‘);
figure(4);
subplot(311);
plot(timekp‘r‘);
xlabe
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄??????????0??2010-05-28?15:55??BPPid
?????文件???????3198??2010-05-27?15:02??BPPid\pid.asv
?????文件???????3199??2010-05-27?15:11??BPPid\pid.m
?????文件??????49771??2010-05-27?15:14??BPPid\figure1.jpg
?????文件??????59141??2010-05-27?15:08??BPPid\figure2.jpg
?????文件??????48504??2010-05-27?15:08??BPPid\figure3.jpg
?????文件??????56762??2010-05-27?15:08??BPPid\figure4.jpg
-----------?---------??----------?-----??----
???????????????220575????????????????????7
- 上一篇:matlab邏輯回歸應用代碼十分詳細附數據
- 下一篇:形狀特征提取
評論
共有 條評論