【Matlab】

[toc]

A Simulink 仿真基础

A.a Simulink的启动

(八)【Matlab】Simulink系统仿真 - 图1
(八)【Matlab】Simulink系统仿真 - 图2
(八)【Matlab】Simulink系统仿真 - 图3

A.b 系统仿真模型的创建

(八)【Matlab】Simulink系统仿真 - 图4
Simulink的模块库分为两类:一类是基本模块库(Simulink模块库),另一类是专业模块库

(八)【Matlab】Simulink系统仿真 - 图5
(八)【Matlab】Simulink系统仿真 - 图6
(八)【Matlab】Simulink系统仿真 - 图7

(八)【Matlab】Simulink系统仿真 - 图8

(八)【Matlab】Simulink系统仿真 - 图9

A.c 仿真参数的设置

(八)【Matlab】Simulink系统仿真 - 图10
(八)【Matlab】Simulink系统仿真 - 图11
(八)【Matlab】Simulink系统仿真 - 图12
(八)【Matlab】Simulink系统仿真 - 图13
(八)【Matlab】Simulink系统仿真 - 图14

B 子系统的创建与封装

B.a 子系统的创建

(八)【Matlab】Simulink系统仿真 - 图15

(八)【Matlab】Simulink系统仿真 - 图16
双击它进入子模块
(八)【Matlab】Simulink系统仿真 - 图17
(八)【Matlab】Simulink系统仿真 - 图18

(八)【Matlab】Simulink系统仿真 - 图19
选择系统的所有模块,再选择相关命令(或者Ctrl+G)
(八)【Matlab】Simulink系统仿真 - 图20
所选模块,将被一个子系统取代
(八)【Matlab】Simulink系统仿真 - 图21


B.b 子系统的封装

所谓子系统的封装,就是对子系统定制对话框和图标。使得子系统本身有一个独立的操作界面。把子系统中多模块的参数设置合成在一个对话框内,这样使子系统使用更加方便。

先点击子系统图标再选择命令
(八)【Matlab】Simulink系统仿真 - 图22
(八)【Matlab】Simulink系统仿真 - 图23
(八)【Matlab】Simulink系统仿真 - 图24
重点介绍第二个选项卡
(八)【Matlab】Simulink系统仿真 - 图25
双击Edit在中间的Parameter中可以设置相应控件名的提示信息。
(八)【Matlab】Simulink系统仿真 - 图26
双击子系统图标,设置参数的值
(八)【Matlab】Simulink系统仿真 - 图27
(八)【Matlab】Simulink系统仿真 - 图28


B.c 条件执行子系统

子系统的执行,依赖于其他信号,这个信号,称为控制信号.受控制信号控制的子系统,称为条件执行子系统。
(八)【Matlab】Simulink系统仿真 - 图29

(八)【Matlab】Simulink系统仿真 - 图30
例子:
(八)【Matlab】Simulink系统仿真 - 图31

(八)【Matlab】Simulink系统仿真 - 图32
(八)【Matlab】Simulink系统仿真 - 图33
(八)【Matlab】Simulink系统仿真 - 图34
例子:
(八)【Matlab】Simulink系统仿真 - 图35
(八)【Matlab】Simulink系统仿真 - 图36
(八)【Matlab】Simulink系统仿真 - 图37
(八)【Matlab】Simulink系统仿真 - 图38

(八)【Matlab】Simulink系统仿真 - 图39


显示多个坐标轴:https://www.ilovematlab.cn/thread-553146-1-1.html
显示组件名:https://www.cnblogs.com/luxiaoguogege/p/11410605.html

C S函数的设计与应用

C.a 什么加S函数

(八)【Matlab】Simulink系统仿真 - 图40

C.b 用M文件编写S函数的方法

(八)【Matlab】Simulink系统仿真 - 图41

C.c 在仿真模型中使用S函数的方法

(八)【Matlab】Simulink系统仿真 - 图42
输入参数还可以包括自定义参数;sys取决于flag的值;如果系统没有状态变量,x0为一个空阵。ts为列矩阵,一列是状态变量的采样周期,另一列是相应的采样时间的偏移量,对于连续系统,都应置为0。如果取采样周期为-1,则将继承输入信号的采样周期。
(八)【Matlab】Simulink系统仿真 - 图43
flag4,9很少用;子函数不一定会全使用


C.d S函数的应用

(八)【Matlab】Simulink系统仿真 - 图44

  • 主函数:timekb.m
  1. function [sys,x0,str,ts]=timekb(t,x,u,flag,k,b)
  2. % t:仿真时间
  3. % x:状态向量
  4. % u:输入向量
  5. % flag:子函数调用标志
  6. % sys:一种返回参数
  7. % x0:初始状态值
  8. % k,b:自定义变量
  9. switch flag
  10. case 0
  11. [sys,x0,str,ts]=mdlInitializeSizes; % flag=0时,调用初始化自函数
  12. case 3
  13. sys=mdlOutputs(t,x,u,k,b); % flag=0时,调用输出子函数
  14. case {1,2,4,9}
  15. sys=[];
  16. otherwise
  17. error(num2str(flag)) % 出错处理
  18. end

  • 初始化自函数mdlInitializeSize.m,定义S函数的参数,如采样时间、输入量,输出量、状态变量的个数以及其他特征。
  1. function [sys,x0,str,ts]=mdlInitializeSizes()
  2. sizes=simsizes; % 返回一个结构,为Simulink提供初始化相关信息
  3. % 连续状态变量个数,离散状态变量个数,输出变量个数,输入个数。
  4. %这四个值可以置为-1,使其大小可以动态改变。
  5. sizes.NumContStates=0; % 无连续状态
  6. sizes.NumDiscStates=0; % 无离散状态
  7. sizes.NumOutputs=1; % 有一个输出量
  8. sizes.NumInputs=1; % 有一个输入信号
  9. % 输入信号是否在输出端出现;模块采样周期个数,一般取1
  10. sizes.DirFeedthrough=1; % 输出量中含有输入量
  11. sizes.NumSampleTimes=1; % 单个采样周期
  12. % 给返回参数赋值
  13. sys=simsizes(sizes);
  14. x0=[]; % 设置初始状态为零状态
  15. str=[]; % str变量设置为空字符串
  16. ts=[-1,0]; % 假定继承输入信号的采样周期
  • 输出子函数:mdlOutputs.m
  1. function sys=mdlOutputs(t,x,u,k,b)
  2. sys=k*u+b;

以上函数,用各自函数名分别存盘,这样S函数就建好了


(八)【Matlab】Simulink系统仿真 - 图45
双击S-Function模块
(八)【Matlab】Simulink系统仿真 - 图46
点击S-Function模块,打开封装编辑器。
(八)【Matlab】Simulink系统仿真 - 图47
双击S-Function模块
(八)【Matlab】Simulink系统仿真 - 图48运行结果
(八)【Matlab】Simulink系统仿真 - 图49


图片来源:
https://www.icourse163.org/search.htm?search=中南大学 Matlab#/