📄 ch2example23sfunshow.m
字号:
function [sys,x0,str,ts]=ch2example23Sfunshow(t,x,u,flag,v0,theta0,L,m,g,k)
% 单摆的动画显示
switch flag,
case 0 % flag=0 初始化
sizes = simsizes; % 获取SIMULINK仿真变量结构
sizes.NumContStates = 0; % 连续系统的状态数是0
sizes.NumDiscStates = 0; % 离散系统的状态数是0
sizes.NumOutputs = 0; % 输出信号数目是0
sizes.NumInputs = 1; % 输入信号数目是0
sizes.DirFeedthrough = 1; % 该系统是直通的
sizes.NumSampleTimes = 1; % 这里必须为1
sys = simsizes(sizes);
str = []; % 通常为空矩阵
x0 = []; % 初始状态矩阵x0
ts = [-1 0];
case 3 % flag=3 计算输出
sita=u;
x=L*sin(sita); % 计算摆锤的位置
y=-L*cos(sita);
plot([0,x],[0,y],'-o');% 动画作图
text(.5,-.5,['t=',num2str(t)]);% 显示参数
text(.5,-.6,['L=',num2str(L)]);
text(.5,-.7,['m=',num2str(m)]);
text(.5,-.8,['k=',num2str(k)]);
axis equal; % 坐标纵横比例相同
axis([-L L -L L]);% 坐标范围固定
set(gcf,'DoubleBuffer','on');% 双缓冲避免作图闪烁
drawnow; % 立即执行作图命令
case {1,2,4,9} % 其他作不处理的flag
sys=[]; % 无用的flag时返回sys为空矩阵
otherwise % 异常处理
error(['Unhandled flag = ',num2str(flag)]);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -