📄 m05_lianxuxitong.m
字号:
function [sys,x0,str,ts] = m05_lianxuxitong(t,x,u,flag)
% 定义连续系统的S函数.
% 连续状态方程:
% x' = Ax + Bu
% y = Cx + Du
% 生成连续状态系统
A=[-1 -0.05
1 0];
B=[1 -6
0 -2];
C=[ 0 2
1 0];
D=[-2 0
2 0];
switch flag,
case 0, %初始化状态
[sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D);
case 1, %计算连续状态变量
sys=mdlDerivatives(t,x,u,A,B,C,D);
case 3, %计算系统输出
sys=mdlOutputs(t,x,u,A,B,C,D);
case { 2, 4, 9 }, %未定义标示
sys = [];
otherwise %处理错误
error(['Unhandled flag = ',num2str(flag)]);
end
%==============初始化状态===================================================
function [sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D)
sizes = simsizes; %取系统默认设置
sizes.NumContStates = 2; %设置连续变量的个数
sizes.NumDiscStates = 0; %设置离散变量的个数
sizes.NumOutputs = 2; %设置输出变量的个数
sizes.NumInputs = 2; %设置输入变量的个数
sizes.DirFeedthrough = 1; %设置输出量的计算
sizes.NumSampleTimes = 1; %设置采样周期的个数
sys = simsizes(sizes); %设置系统的大小参数
x0 = zeros(2,1); %设置为零初始状态
str = []; %设置字符串矩阵
ts = [0 0]; %设置采样周期:[0 0]系统默认;[-1 0]继承输入信号的采样周期
%%==============计算连续状态变量============================================
function sys=mdlDerivatives(t,x,u,A,B,C,D)
sys = A*x + B*u;
%===============计算系统输出================================================
function sys=mdlOutputs(t,x,u,A,B,C,D)
sys = C*x + D*u;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -