% Description: ADRC仿真P25图1.4.6 安排过渡过程的微分信号
% Data: 2019/06/25
% Author:江涛
%%
clear all;
close all;
h=0.001;
tf=15;
n=tf/h;
x=zeros(2,n);
y=zeros(2,n);
z=zeros(2,n);
w=zeros(2,n);
%首先定义一组维数相同的全零矩阵 此处对应的是2维n列
%用来存放循环中产生的数据
t=0:h:tf-h;
a1=2;
a2=2;
k11=10;k12=12;
k21=10;k22=120;
k31=1000;k32=120;
k41=1000;k42=12;
v0=1;
T0=2; %这是安排过渡时间
t1=0; %对于安排定义过渡时间函数trns,t1表示的是连续函数的时间,在离散的方程中
%我们使用 t1=t1+h;来代替
for i=1:n-1;
v0(i)=1;
x(:,i+1)=x(:,i)+h*[x(2,i) -(a1+k11)*(x(1,i)-v0(i)*trns(T0,t1))-(a2+k12)*(x(2,i)-v0(i)*dtrns(T0,t1))]';
y(:,i+1)=y(:,i)+h*[y(2,i) -(a1+k21)*(y(1,i)-v0(i)*trns(T0,t1))-(a2+k22)*(y(2,i)-v0(i)*dtrns(T0,t1))]';
z(:,i+1)=z(:,i)+h*[z(2,i) -(a1+k31)*(z(1,i)-v0(i)*trns(T0,t1))-(a2+k32)*(z(2,i)-v0(i)*dtrns(T0,t1))]';
w(:,i+1)=w(:,i)+h*[w(2,i) -(a1+k41)*(w(1,i)-v0(i)*trns(T0,t1))-(a2+k42)*(w(2,i)-v0(i)*dtrns(T0,t1))]';
t1=t1+h;
end
suptitle('图1.4.6')
subplot(141)
plot(t,x(1,:),'linewidth',2); %linewidth表示的线条的粗细
hold on;
grid on ; %打开网格显示 grid off 关闭网格显示
xlabel('采样时间') ; %x轴标记
ylabel('响应') ; %y轴标记
legend('阶跃响应') %图例,根据绘图顺序依次显示
%axis([0,7,0,1.4]) %[ xmin xmax ymin ymax]分别给出x轴和y轴的最大值和最小值
text(1,0.1,'k1=10 k2=12','fontsize',15) %在图形的指定位置加字符
subplot(142)
plot(t,y(1,:),'linewidth',2); %linewidth表示的线条的粗细
hold on;
grid on %打开网格显示 grid off 关闭网格显示
xlabel('采样时间') %x轴标记
ylabel('响应') %y轴标记
legend('阶跃响应') %图例,根据绘图顺序依次显示
%axis([0,7,0,1.4]) %[ xmin xmax ymin ymax]分别给出x轴和y轴的最大值和最小值
text(1,0.1,'k1=10 k2=120','fontsize',15) %在图形的指定位置加字符
subplot(143)
plot(t,z(1,:),'linewidth',2); %linewidth表示的线条的粗细
hold on;
grid on %打开网格显示 grid off 关闭网格显示
xlabel('采样时间') %x轴标记
ylabel('响应') %y轴标记
legend('阶跃响应') %图例,根据绘图顺序依次显示
%axis([0,7,0,1.4]) %[ xmin xmax ymin ymax]分别给出x轴和y轴的最大值和最小值
text(1,0.1,'k1=1000 k2=120','fontsize',15) %在图形的指定位置加字符
subplot(144)
plot(t,w(1,:),'linewidth',2); %linewidth表示的线条的粗细
hold on;
grid on ; %打开网格显示 grid off 关闭网格显示
xlabel('采样时间') %x轴标记
ylabel('响应') %y轴标记
legend('阶跃响应') %图例,根据绘图顺序依次显示
%axis([0,7,0,1.4]) %[ xmin xmax ymin ymax]分别给出x轴和y轴的最大值和最小值
text(1,0.1,'k1=1000 k2=12','fontsize',15) %在图形的指定位置加字符