%**************************************************************************
% x1(k+1)=x1(k)+2*x2(k)
% x2(k+1)=3x1(k)+2*u(k)
% y(k+1)=2x1(k)+u(k)
%**************************************************************************
function [sys,x0,str,ts]=ls2ztfc(~,x,u,flag)
switch flag,
case 0 % 调用初始化函数
[sys,x0,str,ts] = mdlInitializeSizes();
case 2 % 调用离散状态的更新函数
sys = mdlUpdates(x,u);
case 3 % 调用输出量的计算函数
sys = mdlOutputs(x,u);
case {1,4,9} % 未使用的 flag 值
sys = [];
otherwise % 处理错误
error(['Unhandled flag = ',num2str(flag)]);
end;
% 当 flag 为 0 时进行整个系统的初始化
function [sys,x0,str,ts] = mdlInitializeSizes()
% 首先调用 simsizes 函数得出系统规模参数 sizes, 并根据离散系统的
% 实际情况设置 sizes 变量
sizes = simsizes; % 读入初始化参数模板
sizes.NumContStates = 0; % 连续状态变量个数:0
sizes.NumDiscStates = 2; % 离散状态变量个数:2
sizes.NumOutputs = 1; % 输出两个量:跟踪信号和微分信号
sizes.NumInputs = 1; % 系统输入信号一路
sizes.DirFeedthrough = 1; % 输入直接传到输出口
sizes.NumSampleTimes = 1; % 单个采样周期
sys = simsizes(sizes); % 根据上面的设置设定系统初始化参数
x0 = [0;0]; % 设置初始状态为零状态
str = []; % 将 str 变量设置为空字符串即可
ts = [-1 0]; % 采样周期,若写成 -1 则表示继承其输入信号
% 在主函数的 flag=2 时,更新离散系统的状态变量
function sys = mdlUpdates(x,u)
sys(1,1)=x(1)+2*x(2);
sys(2,1)=3*x(1)+2*u;
% 在主函数 flag=3 时,计算系统的输出变量:返回两个状态
function sys = mdlOutputs(x,u)
sys=2*x(1)+u;
S-function.rar_S function_S-function离散_s函数_s函数离散_离散状态空间
版权申诉
97 浏览量
2022-07-14
08:39:25
上传
评论 1
收藏 4KB RAR 举报
小贝德罗
- 粉丝: 70
- 资源: 1万+
评论0