求助:RBF复合PID控制的MATLAB程序,对二阶被控对象的仿真结果是发散的?

来源:百度知道 编辑:UC知道 时间:2024/05/15 05:52:24
求助高手,帮我看看我的MATLAB程序,请问是哪里出错了呢?不知道为什么我对二阶被控对象控制时,得到的结果总是发散的。
设二阶被控对象为:G(S)=1/(0.03S+1)(0.05S+1)
输入指令信号为:rin=1

程序如下:
%%%%% RBF网络PID %%%%%
clear all;
close all;

T=0.005;%采样周期
sys=tf(1,[0.0015,0.08,1]);
dsys=c2d(sys,T,'z');
[num,den]=tfdata(dsys,'v');

%%%%% 学习率初值给定 %%%%%
xite=0.05;%学习速率η
alfa=0.1;%平滑因子
belte=0.15;
x=[0,0,0]';%网络的输入向量

H=3;%隐含层节点数
ci=28*ones(3,H);
bi=40*ones(H,1);
w=30*ones(H,1); %网络的权向量
h=zeros(H,1);%隐层输出

ci_1=ci;ci_2=ci_1;ci_3=ci_2;
bi_1=bi;bi_2=bi_1;bi_3=bi_2;
w_1=w;w_2=w_1;w_3=w_2;

u_1=0;y_1=0;%函数中间变量
u_2=0;y_2=0;%函数中间变量

xc=[0,0,0]';%高斯函数的输入
error_1=0;error_2=0;%误差初始化

%%%%% PID初始参数给定 %%%%%
kp=1;%比例系数
ki=0.1;%积分系数
kd=0.01;%微分系数

kp_1=kp;
ki_1=ki;
kd_1=kd;

xitekp=0.5;
xiteki=0.5;
xitekd=0.5;

%%%%% RBF网络PID %%%%%
clear all;
close all;

T=0.005;%采样周期
sys=tf(1,[0.0015,0.08,1]);
dsys=c2d(sys,T,'z');
[num,den]=tfdata(dsys,'v');

%%%%% 学习率初值给定 %%%%%
xite=0.05;%学习速率η
alfa=0.1;%平滑因子
belte=0.15;
x=[0,0,0]';%网络的输入向量

H=3;%隐含层节点数
ci=28*ones(3,H);
bi=40*ones(H,1);
w=30*ones(H,1); %网络的权向量
h=zeros(H,1);%隐层输出

ci_1=ci;ci_2=ci_1;ci_3=ci_2;
bi_1=bi;bi_2=bi_1;bi_3=bi_2;
w_1=w;w_2=w_1;w_3=w_2;

u_1=0;y_1=0;%函数中间变量
u_2=0;y_2=0;%函数中间变量

xc=[0,0,0]';%高斯函数的输入
error_1=0;error_2=0;%误差初始化

%%%%% PID初始参数给定 %%%%%
kp=1;%比例系数
ki=0.1;%积分系数
kd=0.01;%微分系数

kp_1=kp;
ki_1=ki;
kd_1=kd;

xitekp=0.5;
xiteki=0.5;
xitekd=0.5;

for k=1:1:1000%采样
time(k)=k*T;
rin(k)=1;%输入指令信号
yout(k)=-den(3)*y_2-den(2)*y_1+num(3)*u_2+num(2)*u_1; %二阶被