MATLAB代做|FPGA代做|simulink代做——一般SISO的Lyapunov-MRAS设计
%一般SISO的Lyapunov-MRAS设计
clear;
clc;
h=0.1; L=200/h; %数值积分步长和仿真步数(减小h,可以提高积分精度)
nump=[1]; denp=[1 2 1]; n=length(denp)-1; %对象参数(严格正实)
numm=[1]; denm=[1 1 1];
kp=1; [Ap,Bp,Cp,Dp]=tf2ss(kp*nump,denp); %对象参数(传递函数型转换为状态空间型)
km=1; [Am,Bm,Cm,Dm]=tf2ss(km*numm,denm); %参考模型参数
gamma=0.1; %自适应增益
yr0=0; u0=0; e0=0; %初值
yp0=0; ym0=0;
xp0=zeros(n,1); xm0=zeros(n,1); %状态向量初值
kc0=0; %可调增益初值
f10=0; f00=0;
r=2; yr=r*[ones(1,L/4) -ones(1,L/4) ones(1,L/4) -ones(1,L/4)]; %输入信号
P=[3 1;1 1];
for k=1:L
time(k)=k*h;
xp(:,k)=xp0+h*(Ap*xp0+Bp*u0);
yp(k)=Cp*xp(:,k); %计算yp
xm(:,k)=xm0+h*(Am*xm0+Bm*yr0);
ym(k)=Cm*xm(:,k); %计算ym
e(k)=ym(k)-yp(k); %e=ym-yp
kc=kc0+h*gamma*[e0 (e(k)-e0)]*P(:,2)*yr0; %Lyapunov-MRAC自适应律
f0=f00-h*gamma*[e0 (e(k)-e0)]*P(:,2)*yp0;
f1=f10-h*gamma*[e0 (e(k)-e0)]*P(:,2)*(yp(k)-yp0);
u(k)=kc*yr(k)-(f1*(yp(k)-yp0)+f0*yp(k)); %控制量
%更新数据
yr0=yr(k); u0=u(k); e0=e(k);
yp0=yp(k); ym0=ym(k);
f10=f1; f00=f0;
xp0=xp(:,k); xm0=xm(:,k);
kc0=kc;
end
subplot(2,1,1);
plot(time,ym,'r',time,yp,':');
xlabel('t'); ylabel('y_m(t)、y_p(t)');
legend('y_m(t)','y_p(t)');
subplot(2,1,2);
plot(time,u);
clear;
clc;
h=0.1; L=200/h; %数值积分步长和仿真步数(减小h,可以提高积分精度)
nump=[1]; denp=[1 2 1]; n=length(denp)-1; %对象参数(严格正实)
numm=[1]; denm=[1 1 1];
kp=1; [Ap,Bp,Cp,Dp]=tf2ss(kp*nump,denp); %对象参数(传递函数型转换为状态空间型)
km=1; [Am,Bm,Cm,Dm]=tf2ss(km*numm,denm); %参考模型参数
gamma=0.1; %自适应增益
yr0=0; u0=0; e0=0; %初值
yp0=0; ym0=0;
xp0=zeros(n,1); xm0=zeros(n,1); %状态向量初值
kc0=0; %可调增益初值
f10=0; f00=0;
r=2; yr=r*[ones(1,L/4) -ones(1,L/4) ones(1,L/4) -ones(1,L/4)]; %输入信号
P=[3 1;1 1];
for k=1:L
time(k)=k*h;
xp(:,k)=xp0+h*(Ap*xp0+Bp*u0);
yp(k)=Cp*xp(:,k); %计算yp
xm(:,k)=xm0+h*(Am*xm0+Bm*yr0);
ym(k)=Cm*xm(:,k); %计算ym
e(k)=ym(k)-yp(k); %e=ym-yp
kc=kc0+h*gamma*[e0 (e(k)-e0)]*P(:,2)*yr0; %Lyapunov-MRAC自适应律
f0=f00-h*gamma*[e0 (e(k)-e0)]*P(:,2)*yp0;
f1=f10-h*gamma*[e0 (e(k)-e0)]*P(:,2)*(yp(k)-yp0);
u(k)=kc*yr(k)-(f1*(yp(k)-yp0)+f0*yp(k)); %控制量
%更新数据
yr0=yr(k); u0=u(k); e0=e(k);
yp0=yp(k); ym0=ym(k);
f10=f1; f00=f0;
xp0=xp(:,k); xm0=xm(:,k);
kc0=kc;
end
subplot(2,1,1);
plot(time,ym,'r',time,yp,':');
xlabel('t'); ylabel('y_m(t)、y_p(t)');
legend('y_m(t)','y_p(t)');
subplot(2,1,2);
plot(time,u);
xlabel('t'); ylabel('u(t)');
联系:highspeedlogic
QQ :1224848052
微信:HuangL1121
邮箱:1224848052@qq.com
微信扫一扫:
上一篇:MATLAB代做|FPGA代做|simulink代做——SVM支持向量机 下一篇:MATLAB代做|FPGA代做|simulink代做——LDPC编码C语言实现