![MATLAB计算机视觉实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/900/23400900/b_23400900.jpg)
1.3 基于Simulink的仿真
1.3.1 什么是Simulink
MATLAB中的Simulink是专门用于仿真的软件包,它的名称是Simulation(模拟仿真)和Link(连接)的组合词。Simulink可以提供研究对象的建模、仿真和分析,它使用图形化的系统模块对研究对象进行描述,每个模块像实验室中的一台仪器一样,可以根据需要进行不同的组合以达到不同的研究目的。
在Simulink中,模块是仿真的基石,将这些模块相连接构成系统,可以进行仿真,运行结果可以用图形的形式显示出来,整个仿真过程非常简洁、方便、直观。
1.3.2 Simulink模块库介绍
Simulink模块库是建立模型的基础,其中囊括了大量的基本功能模块,只有用户熟练地掌握了模块库,才能快速、高效地建立模型。
在Simulink模块库中包含有以下子模块库,如表1.3.1所示。
表1.3.1 模块库(首字母大写)
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T55_11820.jpg?sign=1739596080-wp2p0P6WBb9WbYu8Gbg3WEH0tr0Kh4AX-0-90ebc9fab08c0cfdde2b47ff0b10b9b6)
1.常用模块库
常用模块库中的模块是Simulink所有模块库中使用频率最高的模块合集,主要是为了方便用户以最快的速度建立模型。常用模块库包含如图1.3.1所示的成员,模块功能如表1.3.2所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P55_6451.jpg?sign=1739596080-HK7CAWmIzuBg1yUaBBl8MFc9BXQYpmHD-0-f8ba98f367f97eabcfed253d4f0dfa98)
图1.3.1 常用模块库
表1.3.2 常用模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T56_11823.jpg?sign=1739596080-PnrbcauxsOiO6cwNDeW5GIqjSN0Xgs3V-0-7117793650671bf2d6a9ef7764c0d2fb)
2.连续模块库
连续模块库中的模块如图1.3.2所示,它包含了搭建连续系统所需的绝大部分模块,这些模块的功能如表1.3.3所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P56_6728.jpg?sign=1739596080-aIF9MqxAlOaX1bYVTlUmqteZiwGHPvVk-0-d7905e32149cda5ea50983e7f49aff0c)
图1.3.2 连续模块库
表1.3.3 连续模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T56_11826.jpg?sign=1739596080-LQkFG0gi6job2DNO1vEaR3QrU6U7QS6s-0-5e5f8824c4be7cbb3fc20326ca8c63dc)
3.离散模块库
离散模块库中的模块如图1.3.3所示。其功能如表1.3.4所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P57_6904.jpg?sign=1739596080-lkF4ULHSrs9IcMQgDOrbvbu3QrKVVqrb-0-1756a2ae500b8c0d2a4c292e3027af26)
图1.3.3 离散模块库
表1.3.4 离散模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T57_11830.jpg?sign=1739596080-NAP3ENC4GU3hfz8Os6foxqYPfBT9e4Ny-0-1913255492cb5c56a3e87bd296832e47)
4.数学运算模块库
数学运算模块将很多数学运算封装成模块的形式,使数学运算操作大大简化,减少了很多程序设计上的烦琐过程。此模块库所包含的模块如图1.3.4所示。其功能如表1.3.5所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P58_7162.jpg?sign=1739596080-xjcsEwjPHpndciz5siigsZ5FF53tYTxH-0-96b82ba0d4666a8cdf2a30f07ff84189)
图1.3.4 数学运算模块库
表1.3.5 数学运算模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T58_11833.jpg?sign=1739596080-ykzIYBf7yrFfjY6L8Oad8aCVZcA2sJfb-0-c73b1d14ea1fab99b7ff47abd3dffed4)
5.信号源模块库
信号源模块库如图1.3.5所示。其功能如表1.3.6所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P59_7421.jpg?sign=1739596080-nFGps3lXZHGWkURxMongsu4Gap5B5imn-0-2f5032491c316e6cb67a3f28d7371298)
图1.3.5 信号源模块库
表1.3.6 信号源模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T59_11836.jpg?sign=1739596080-JB9CN1GLGL6mT6OXzqhmFYVaxf8Rj4rw-0-b8abfb4ae8f5de6f3e6a9db930951865)
6.信号接收模块库
信号接收模块库如图1.3.6所示。其功能如表1.3.7所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P59_7676.jpg?sign=1739596080-eHjSGAxp36GzCdTozqsTD0yrJhN8QQst-0-3775dded811d1e0eb9d9797949ed614d)
图1.3.6 信号接收模块库
表1.3.7 信号接收模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T60_11839.jpg?sign=1739596080-Xtr1NQdZWxz5sWY4nnjfWLLn7NJJjpZ1-0-1f75bb85e1ce3bbc2600fe49746e92db)
7.用户自定义模块库
用户自定义模块库如图1.3.7所示。其功能如表1.3.8所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P60_7813.jpg?sign=1739596080-TBad1h9Cr8knLRnkma9d6SaK1pHoRiXL-0-0051baec9764a99621e34a80e0b4a8c7)
图1.3.7 用户自定义模块库
表1.3.8 用户自定义模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T60_11842.jpg?sign=1739596080-WsK4JY7fECtNErd46uJHX0Srb7zQ8hNq-0-a61500e4c3fc0fb62ef1b1091abb352c)
1.3.3 创建一个简单的Simulink示例
本节通过一个简单的示例来向读者展示如何创建Simulink仿真模型、运行仿真模型、显示仿真结果及保存仿真模型。
例1.3.1 创建一个产生正弦信号并对其进行观察的仿真模型。
步骤如下:
步骤1:在MATLAB的命令行窗口运行simulink命令(注意:指令的首字母应小写),或单击工具栏中的图标,就可以打开Simulink模块库浏览器(Simulink Library Browser)窗口,如图1.3.8所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P61_7894.jpg?sign=1739596080-nuagnA5yMicoc2VHEiXZtBe8iZXM3puJ-0-03ca343898fe36f694d318ec20a68f07)
图1.3.8 Simulink模块库浏览器
步骤2(a):通过菜单File→New→Model新建一个名为untitled的空白模型窗口,如图1.3.9所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P61_7897.jpg?sign=1739596080-aI2ikNz5xcCob8KmiaPL1EkylCgr9WFb-0-9645924c61c254a1178477a95c11030e)
图1.3.9 步骤2(a)的实现过程
步骤2(b):也可以通过选择“主页”→“新建”→Simulink Model建立,如图1.3.10所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P61_7900.jpg?sign=1739596080-uK7JCZ8JqE7E81bRGFO13iGXyQFrid9l-0-a27c25fd4c13c9cc9308c78674fdab2c)
图1.3.10 步骤2(b)的实现过程
通过步骤2所建立的模型窗口如图1.3.11所示,它由菜单、工具栏、模型浏览器窗口、模型框图窗口以及状态栏组成。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P62_7905.jpg?sign=1739596080-BH5fIQtzGed1oenEifQjeLtj6tZ1sq4l-0-b254b88ad4a1830cd68ad6b312b4191c)
图1.3.11 模型窗口组成示意图
步骤3:从右侧子模块窗口中,直接单击Simulink下的Sources子模块库,便可看到各种输入源模块,如图1.3.12所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P62_7909.jpg?sign=1739596080-k1nas0mAtC5kwvy1uG96A3hKTIBqRJYY-0-14a303df17a5793b115484b48365cdac)
图1.3.12 步骤3的实现过程
步骤4:单击所需要的输入信号源模块Sine Wave(如图1.3.13所示),将其拖放到空白模型窗口untitled,Sine Wave模块就被添加到untitled窗口;也可以用鼠标选中Sine Wave模块并右击,在快捷菜单中选择add to'untitled'命令,就可以将Sine Wave模块添加到untitled窗口,如图1.3.14所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P63_7918.jpg?sign=1739596080-mlHrVn9ecEjCCVPAKD2KsmhgFXPwRoy2-0-6200f6e68956758222694298e05b3a82)
图1.3.13 单击所需要的输入信号源模块Sine Wave
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P63_7921.jpg?sign=1739596080-ggHukZUQploJZ0WSSh298e80JE9K2Pgr-0-d04b6a02f7a59f52784b666e08dbbe27)
图1.3.14 将Sine Wave模块添加到untitled窗口
步骤5:用同样的方法打开接收模块库Sinks,选择其中的Scope模块(示波器)拖放到untitled窗口中,如图1.3.15和图1.3.16所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P63_7924.jpg?sign=1739596080-xIEBncweg1ig5zLPBgfxyx0e1i9faTxX-0-1db272daf2f695f53bcebfd6e4a5f108)
图1.3.15 步骤5的实现过程
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P64_7929.jpg?sign=1739596080-ZReThV6RAENnnPkB2r9YwbIfcVWSKgny-0-83dd8a2b3ec298c7c22f83d189c16d23)
图1.3.16 步骤5的实现效果
步骤6:在untitled窗口中,用鼠标指向Sine Wave右侧的输出端,当光标变为十字符时,按住鼠标拖向Scope模块的输入端,再松开鼠标按键,就完成了两个模块间的信号线连接,一个简单模型已经建成,如图1.3.17所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P64_7932.jpg?sign=1739596080-xwGW7PwZwHc4Jr3wBDjhqHa8TEsnQCjJ-0-13a53d1271922b0f88d5561696dd9fe6)
图1.3.17 步骤6的实现过程
步骤7:开始仿真,单击untitled模型窗口中“开始仿真”图标,或者选择菜单Simuliation→Run,仿真开始。双击Scope模块出现示波器显示屏,可以看到黄色的正弦波形,如图1.3.18所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P64_7935.jpg?sign=1739596080-FY4FMXKSbvqfztvzEKUyaiZqQoiS6x1s-0-21d15cd9a466666d1a804dac945dce63)
图1.3.18 步骤7的实现效果
步骤8:保存模型,单击工具栏的图标,将该模型保存为Ex0901.mdl文件。
通过例1.3.1可以了解如何建立、运行、观察、运行Simulink的仿真模型。
1.3.4 对模块进行基本操作
1.对象的选定
要选定对象只要在对象上单击,被选定的对象的四角处会出现小块编辑框,如图1.3.19所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P65_7946.jpg?sign=1739596080-AG1CLJIBNpqmz1eeFH90IdQT50PEMSxN-0-3838a74f65e3040f55ebaf7a2d09d3e1)
图1.3.19 选定单个对象
如果选定多个对象,可以按下Shift键,然后再单击所需选定的模块;或者用鼠标拉出矩形虚线框,将所有待选模块框在其中,则矩形框中所有的对象均被选中,如图1.3.20所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P65_7950.jpg?sign=1739596080-YuneuIORWmWyfx7Eij85HcxAxqdPb6qo-0-0a1ea0516b89d1722584c795003b17d9)
图1.3.20 选定多个图像
如果要选定所有对象,可以选择菜单Edit→SelectAll,如图1.3.21所示;也可以右击选择SelectAll,如图1.3.22所示;还可以通过快捷键Ctrl+A来实现。所有对象被选中后如图1.3.23所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P65_7954.jpg?sign=1739596080-MCGw6mXoGY84fItWXmmy7RFnWO5cFmP5-0-77cb1b266f2d6bacddff4a8aace38162)
图1.3.21 选择菜单Edit→SelectAll
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P65_7958.jpg?sign=1739596080-p8SOmY9cwhDjdivL1PhC8vDP714KDIv3-0-1d2e882e4f344c5aaafbcec16146a16f)
图1.3.22 右击选择SelectAll
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P65_7961.jpg?sign=1739596080-6XcKAf0Wl0a7pXhEp4177IA09klNoMQb-0-e35e522fc15e19a89c467bade9b62467)
图1.3.23 所有对象被选择后的效果
2.模块的复制
不同模型窗口(包括模型库窗口)之间的模块复制方法如下:
方法1:选定模块,用鼠标将其拖到另一模型窗口。
方法2:使用Edit菜单中的Copy和Paste命令。
方法3:通过快捷键Ctrl+V、Ctrl+C来实现。
在同一模型窗口内复制模块的方法如下:
方法1:选定模块,按下鼠标右键,拖动模块到合适的地方,释放鼠标。
方法2:选定模块,按住Ctrl键,再用鼠标拖动对象到合适的地方,释放鼠标。
方法3:使用Edit菜单中的Copy和Paste按钮。
方法4:通过快捷键Ctrl+V、Ctrl+C来实现。
3.模块的移动
选定需要移动的模块,用鼠标将模块拖到合适的地方。
4.模块的删除
要删除模块,应选定待删除模块,按Delete键。
5.改变模块大小
选定需要改变大小的模块,出现编辑框后,用鼠标拖动编辑框,可以实现放大或缩小。
6.模块名的编辑
1)修改模块名
单击模块下面或旁边的模块名,可对模块名进行修改。
2)模块名字体设置
选定模块,选择Diagram→Format→Font Style,打开字体对话框设置字体。
3)模块名的显示和隐藏
选定模块,选择Diagram→Format,勾选Show Block Name,可以显示模块名,否则为隐藏。
1.3.5 信号线的操作
1.模块间的连线
先将光标指向一个模块的输出端,待光标变为十字符后,按下鼠标左键并拖动,直到另一模块的输入端。
2.信号线的分支
按住Ctrl键,同时按下鼠标左键拖动鼠标到分支线的终点,如图1.3.24所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P67_7971.jpg?sign=1739596080-AFBgPjb821vUthragrsaLw8zSf9fFWD3-0-be30c920f67527fa3d296f4252f2cd7c)
图1.3.24 信号线分支操作示意图
3.信号线文本注释
1)添加文本注释
双击需要添加文本注释的信号线,则出现一个空的文字填写框,在其中输入文本。
2)修改文本注释
单击需要修改的文本注释,出现虚线编辑框即可修改文本。