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

📄 rls_wang.m

📁 自己在simulink中仿真的一个自适应例程
💻 M
字号:
function [sys,x0,str,ts]=rls_wang(t,x,u,flag,p,lam)switch flag,    case 0, %初始化        [sys,x0,str,ts] = mdlInitializeSizes(p);    case 2, %离散状态更新        sys=mdlUpdate(t,x,u,lam);    case 3, %计算输出量,亦即控制率和权值        sys=mdlOutputs(t,x,u,4);    case {1,4,9} %未定义的flag值        sys=[];    otherwise %错误处理        error(['Unhanded flag =',num2str(flag)]);end%初始化程序function [sys,x0,str,ts] = mdlInitializeSizes(p)sizes=simsizes; %读入系统变量的默认值sizes.NumContStates=0;%没有连续状态sizes.NumDiscStates=20;%系统里的状态变量个数sizes.NumOutputs=4;%设置4路输出,即受控对象待辨识参数sizes.NumInputs=5;%设置5路输入,输入、输出信号及其以往值sizes.DirFeedthrough=0;%输入信号直接不在输出中反映出来sizes.NumSampleTimes=1;%单采样速率系统sys=simsizes(sizes);%设置系统模型变量p0=p*eye(4);x0=[[0.7,0.5,-1.6,-1.7]';p0(:)];%初始状态变量(权值)str=[];ts=[-1,0];%继承输入信号的采样周期%离散状态更新函数function sys=mdlUpdate(t,x,u,lam)psi=[u(1),u(2),u(4),u(5)]';PN=reshape(x(5:end),4,4);K=PN*psi/(lam+psi'*PN*psi);PN1=(PN-K*psi'*PN)/lam;sys=[x(1:4)+K*(u(3)-psi'*x(1:4));PN1(:)];%输出计算函数function sys=mdlOutputs(t,x,u,M)sys=x(1:M);%输出为前M=r+m+1个状态,即系统参数向量theta

⌨️ 快捷键说明

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