⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adapt_sim.m

📁 控制系统计算机辅助设计——MATLAB语言与应用(源代码)
💻 M
字号:
function [out,in,Rd,Sd]=adapt_sim(A,B,kd,lam,sd,p0,Tend,y_ref)
out=[]; in=[]; std_y=[]; A=A(2:end); B=[zeros(1,kd-1), B];
nA=length(A); f=dimpulse(1,[1,A],kd+nA); Rd=[]; Sd=[];
if f(1)==0, f=f(nA+1:kd+nA); else f=f(1:kd); end;
st_opt=sqrt(ones(1,kd)*(f.*f*sd*sd));
S=[1,zeros(1,length(A)-1)]; R=[1, zeros(1,length(B)-1)];
nS=length(S); nR=length(R); u=zeros(1, nR+kd);
y=zeros(1, nS+kd); P=p0*eye(nR+nS);
for t = 1:Tend
   y_m=-A*y(1:length(A))'+B*u(1:length(B))'+sd*randn(1,1);
   Phi=[u(kd:kd+nR-1), y(kd:kd+nS-1)];
   P=(1/lam)*(P-(P*Phi'*Phi*P)/(lam+Phi*P*Phi'));
   Theta=[R,S]+Phi*P*(y_m-Phi*[R,S]');
   R=Theta(1:nR); S=Theta(nR+1:nR+nS); Rd=[Rd, R]; Sd=[Sd, S];
   s1=R(2:nR); s2=u(1:nR-1);
   if isempty(s1), s1=0; s2=0; end;
   u_new=(-s1*s2'-S*[y_m,y(1:nS-1)]'+y_ref)/R(1);
   u=[u_new, u(1:nR+kd-1)]; y=[y_m, y(1:nS+kd-1)];
   out=[out, y_m]; in=[in, u_new];
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -