《系统识辨与自适应控制MATLAB仿真.rar

  • sirclara
    了解作者
  • matlab
    开发工具
  • 62KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 2
    下载次数
  • 2021-03-08 17:23
    上传日期
关于神经网络算法开发的一些MATLAB模型应用
《系统识辨与自适应控制MATLAB仿真.rar
  • 《系统识辨与自适应控制MATLAB仿真(修订版)》程序源代码
  • chap5
  • chap5_01_PPC.m
    1.9KB
  • diophantine.m
    750B
  • chap5_02_PP_STC.m
    2.9KB
  • chap5_04_PID.m
    1KB
  • chap5_05_PID_PPC.m
    1.2KB
  • chap5_06_STC_PID.m
    1.8KB
  • chap5_03_PP_STC_Direct.m
    2.2KB
  • chap2
  • chap2_03_Noise_Singal_ratio_SISO.m
    994B
  • chap2_09_RGC.m
    895B
  • chap2_04_Noise_Singal_ratio_MIMO.m
    1.3KB
  • chap2_07_FFRLS.m
    1.3KB
  • chap2_01_WhiteNoise_series.m
    763B
  • chap2_05_LS.m
    939B
  • chap2_12_MIMO_RLS.m
    2.5KB
  • chap2_08_RELS.m
    1.5KB
  • chap2_06_RLS.m
    998B
  • chap2_02_Inv_M_series.m
    628B
  • chap2_10_RSNA.m
    1.3KB
  • chap2_11_RML.m
    1.9KB
  • chap6
  • chap6_05_RBFNN_PID.m
    3.3KB
  • chap6_06_FLC_M.m
    3.1KB
  • fuzcon_m.fis
    1.6KB
  • chap6_07a_FLC_M_writefis.m
    1.8KB
  • chap6_01_BPNN_Iden_local.m
    1.9KB
  • chap6_04_RBFNN_Iden_local.m
    1.7KB
  • chap6_03_BPNN_Iden_global.m
    3KB
  • chap6_07b_FLC_M_readfis.m
    1.2KB
  • chap6_02_BPNN_Iden_local_test.m
    1.3KB
  • chap6_08_FLC_Simulink.mdl
    38.7KB
  • fuzcon_gui.fis
    1.6KB
  • chap3
  • chap3_06_Narendra_MRAC_n1.m
    1.5KB
  • chap3_05_Lyapunov_MRAC__State.m
    1.4KB
  • chap3_10_DMRAS_ordn.m
    1.6KB
  • chap3_09_DMRAS_ordn_d.m
    1.6KB
  • chap3_02_MIT_MRAC.m
    990B
  • chap3_07_Narendra_MRAC_n2.m
    1.7KB
  • chap3_08_DMRAS_ord2.m
    1.5KB
  • chap3_03_MIT_MRAC_Standard.m
    1KB
  • chap3_04_Lyapunov_MRAC_Gain.m
    1.1KB
  • chap3_01_Runge_Kutta_Euler.m
    808B
  • chap4
  • chap4_09_GPC_NoIden.m
    1.7KB
  • chap4_12_GPC_Iden_C.m
    3.2KB
  • chap4_02_multidiophantine.m
    246B
  • sindiophantine.m
    804B
  • chap4_05_MVSTC_direct.m
    2.4KB
  • chap4_08_GMVSTC_direct.m
    2.6KB
  • chap4_01_sindiophantine.m
    234B
  • chap4_04_MVSTC_indirect.m
    2.3KB
  • chap4_13_JGPC_CARIMA.m
    2.7KB
  • Gsolve.m
    682B
  • chap4_03_MVC.m
    1.2KB
  • chap4_14_JGPC_CARMA.m
    2.7KB
  • chap4_06_GMVC.m
    1.6KB
  • chap4_10_GPC_Iden.m
    2.4KB
  • multidiophantine.m
    888B
  • chap4_11_GPC_NoIden_C.m
    2.2KB
  • chap4_07_GMVSTC_indirect.m
    2.3KB
内容介绍
%基于局部误差的RBF神经网络辨识+PID自校正控制 clear all; close all; ny=2; nu=3; d=2; %ny、nu、d为系统结构参数 L=1500; %仿真长度 uk=zeros(nu,1); %控制输入初值:uk(i)表示u(k-i); yk=zeros(ny,1); %系统输出初值 %设置RBF网络参数 n=ny+nu+1; m=10; %n、m分别为输入层和隐含层节点数(注意:输入层和隐含层节点数与辨识程序chap6_04不同!) eta=0.5; %学习速率 alpha=0.05; %动量因子 ck1=20*ones(m,n); ck2=ck1; %隐含层中心向量初值: cki表示c(k-i) bk1=40*ones(m,1); bk2=bk1; %隐含层中心向量初值: bki表示b(k-i) wk1=[0.3219 0.4595 0.7815 0.9646 0.5381 0.1629 0.8566 0.1602 -0.9660 -0.7583]; %wk1=rands(1,m); wk2=wk1; %隐含层至输出层权值的初值: wki表示w(k-i) R=zeros(m,1); %定义R结构 db=zeros(m,1); %定义Δb结构 dc=zeros(m,n); %定义Δc结构 %设置PID参数初值 Kp1=0.0; Kp2=Kp1; %比例: Kpi表示Kp(k-i) Ki1=0.0; Ki2=Ki1; %积分: Kii表示Ki(k-i) Kd1=0.0; Kd2=Kd1; %微分: Kdi表示Kd(k-i) eck1=0; eck2=0; %误差: ecki表示ec(k-i) etac=1; %PID参数学习速率 alphac=0.1; %PID参数动量因子 for k=1:L time(k)=k; y(k)=uk(2)^3+uk(3)^3+(0.8+yk(1)^3)/(1+yk(1)^2+yk(2)^4); %采集系统输出数据 %计算PID控制量u(k) yr(k)=0.25*sign(sin(0.002*pi*k))+0.75; ec(k)=yr(k)-y(k); xc(1)=ec(k)-eck1; xc(2)=ec(k); xc(3)=ec(k)-2*eck1+eck2; du=Kp1*xc(1)+Ki1*xc(2)+Kd1*xc(3); %控制增量Δu(k) u(k)=uk(1)+du; %计算RBF网络输出 x=[yk; u(k); uk]; %RBF网络输入(包含u(k)!!!) for j=1:m R(j)=exp(-norm(x-ck1(j,:)')^2/(2*bk1(j)^2)); end ym(k)=wk1*R; %计算Jacobian信息 J(k)=0; for j=1:m J(k)=J(k)+wk1(j)*R(j)*(ck1(j,ny+1)-u(k))/bk1(j)^2; end %PID参数学习 dKp=etac*ec(k)*J(k)*xc(1); %ΔKp(k) dKi=etac*ec(k)*J(k)*xc(2); dKd=etac*ec(k)*J(k)*xc(3); Kp(k)=Kp1+dKp+alphac*(Kp1-Kp2); %Kp(k) Ki(k)=Ki1+dKi+alphac*(Ki1-Ki2); Kd(k)=Kd1+dKd+alphac*(Kd1-Kd2); if Kp(k)<0 Kp(k)=0; end if Ki(k)<0 Ki(k)=0; end if Kd(k)<0 Kd(k)=0; end %RBF网络训练 e(k)=y(k)-ym(k); %模型误差 dw=eta*e(k)*R'; %Δw(k) for j=1:m db(j)=eta*e(k)*wk1(j)*R(j)*norm(x-ck1(j,:)')^2/bk1(j)^3; %Δb(k) for i=1:n dc(j,i)=eta*e(k)*wk1(j)*R(j)*(x(i)-ck1(j,i))/bk1(j)^2; %Δc(k) end end w=wk1+dw+alpha*(wk1-wk2); b=bk1+db+alpha*(bk1-bk2); c=ck1+dc+alpha*(ck1-ck2); %更新数据 bk2=bk1; bk1=b; ck2=ck1; ck1=c; wk2=wk1; wk1=w; for i=nu:-1:2 uk(i)=uk(i-1); end uk(1)=u(k); for i=ny:-1:2 yk(i)=yk(i-1); end yk(1)=y(k); eck2=eck1; eck1=ec(k); Kp2=Kp1; Kp1=Kp(k); Ki2=Ki1; Ki1=Ki(k); Kd2=Kd1; Kd1=Kd(k); end figure(1); plot(time,yr,'r--',time,y,'k:',time,ym,'k'); xlabel('k'); ylabel('y_r(k)、y(k)、y_m(k)'); legend('y_r(k)','y(k)','y_m(k)'); axis([0 L 0.4 1.1]); figure(2); plot(time,y-ym,'k'); xlabel('k'); ylabel('e(k)'); axis([0 L -.1 .1]); figure(3); plot(time,u,'k'); xlabel('k'); ylabel('u(k)'); axis([0 L -.8 .8]); figure(4); subplot(311) plot(time,Kp,'k'); set(gca,'xtick',[]); ylabel('Kp(k)'); subplot(312) plot(time,Ki,'k'); set(gca,'xtick',[]); ylabel('Ki(k)'); subplot(313) plot(time,Kd,'k'); xlabel('k'); ylabel('Kd(k)'); axis([0 L -.5 .5]); figure(5) plot(time,J,'k'); xlabel('k'); ylabel('dy(k)/du(k)');
评论
    相关推荐