![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=1739595106-0SmsSnjkTzFBIvwoeJT0HpqNhKjokuCa-0-92d324f9e16f844f0b72fb3522edef89)
1.常用模块库
常用模块库中的模块是Simulink所有模块库中使用频率最高的模块合集,主要是为了方便用户以最快的速度建立模型。常用模块库包含如图1.3.1所示的成员,模块功能如表1.3.2所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P55_6451.jpg?sign=1739595106-C3SxVSFLF8pxRzYJPzpZ6GzsS8ad26mN-0-5361b589f6bf562b65087fdd53ec3b29)
图1.3.1 常用模块库
表1.3.2 常用模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T56_11823.jpg?sign=1739595106-rl6gs4Acv6jty53ZjKTn8hrBqSjjtvc3-0-d41c560ddd7e67e6785e837a2fb79db6)
2.连续模块库
连续模块库中的模块如图1.3.2所示,它包含了搭建连续系统所需的绝大部分模块,这些模块的功能如表1.3.3所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P56_6728.jpg?sign=1739595106-Tutxe8z1ClbpvBBRRomTLoat9Ex7xFpZ-0-418e36eb795d8eff645927c5fc8bea9b)
图1.3.2 连续模块库
表1.3.3 连续模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T56_11826.jpg?sign=1739595106-cbyhCoQiDQHHW50ZmZ863YQFsCKd6vm8-0-5a441ec61cfc872713a13227a710e863)
3.离散模块库
离散模块库中的模块如图1.3.3所示。其功能如表1.3.4所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P57_6904.jpg?sign=1739595106-C7VXXSWOX2j1rwmC0MnBeXTj81RfpRri-0-20bf922ab89597aca1f7b22bb5656702)
图1.3.3 离散模块库
表1.3.4 离散模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T57_11830.jpg?sign=1739595106-UPKcScFiMq8VKpaa7Xu1LQgwHJJWS5VJ-0-1e63063c46e780c5c416c98b76049b19)
4.数学运算模块库
数学运算模块将很多数学运算封装成模块的形式,使数学运算操作大大简化,减少了很多程序设计上的烦琐过程。此模块库所包含的模块如图1.3.4所示。其功能如表1.3.5所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P58_7162.jpg?sign=1739595106-UbntToRjrA2u92C7kQ3NjN7KYgtKtKkC-0-d20ce8a5b2ef881416e2ce79875e1614)
图1.3.4 数学运算模块库
表1.3.5 数学运算模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T58_11833.jpg?sign=1739595106-NwpxXL4aIRAe4H9kW29EHMkBnEHDXG4o-0-1e477dc00495d86c9c864ddff364bed3)
5.信号源模块库
信号源模块库如图1.3.5所示。其功能如表1.3.6所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P59_7421.jpg?sign=1739595106-wRa9hv2usTgKXXsGDVsmAqdQ00pcBpv9-0-593c566c61bfd18bd8668040ecbfc97f)
图1.3.5 信号源模块库
表1.3.6 信号源模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T59_11836.jpg?sign=1739595106-jxyked8M87TO50LTaPYJz34kOQjterCs-0-47932697b194760a059cf5ce6be72a18)
6.信号接收模块库
信号接收模块库如图1.3.6所示。其功能如表1.3.7所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P59_7676.jpg?sign=1739595106-WgGgdxkHtphgC2AmS5EHTyBjc3zoJSVu-0-83e9dc193c93b1345fcfd7fd0fc6d147)
图1.3.6 信号接收模块库
表1.3.7 信号接收模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T60_11839.jpg?sign=1739595106-SWU7c8vDR0GhKtXfS6K0TL1gthCU14SE-0-6af3ce0dceef8649d2d0cd0d7e7d9a6e)
7.用户自定义模块库
用户自定义模块库如图1.3.7所示。其功能如表1.3.8所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P60_7813.jpg?sign=1739595106-Al2X6UJ962pNiYK64jzOXj9xXuFcokoh-0-2f13841dc49974b6f069145866fdb811)
图1.3.7 用户自定义模块库
表1.3.8 用户自定义模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T60_11842.jpg?sign=1739595106-tBtSusyAxGMvvxqNiQPShrW9270fonpL-0-1a6c792adde3a05acaac4d3e56cae5a4)
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=1739595106-dmmgU7AkaTiycUFL1OweQvawOxO5AqHJ-0-209d10767ae3395ae8b70bbb7e708e90)
图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=1739595106-SV5abpYhmHGcbu4C9pqTn5Tidmi8nZtF-0-2e03f68a811a00d4a2408403a5403b14)
图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=1739595106-QsqnbolvrHEq1zIaSqvwBfgD2HW1LKsp-0-efa9a8d8cdbc5bea24eecf239c235040)
图1.3.10 步骤2(b)的实现过程
通过步骤2所建立的模型窗口如图1.3.11所示,它由菜单、工具栏、模型浏览器窗口、模型框图窗口以及状态栏组成。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P62_7905.jpg?sign=1739595106-8n2utiPCzTlUFkTVtVfXza3zUGD2J0O3-0-38ccb253724aa8ecf54a257538c08426)
图1.3.11 模型窗口组成示意图
步骤3:从右侧子模块窗口中,直接单击Simulink下的Sources子模块库,便可看到各种输入源模块,如图1.3.12所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P62_7909.jpg?sign=1739595106-dyxTtGqAgem71dETp8iyBex2f80gIlji-0-5b76373af923c78d1fbc5fcbf6b0898d)
图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=1739595106-tXMolbqvQsI0kMZDQcRcUTl2Q9jJrP5e-0-222e0e39845eadaad96f0541caa9187d)
图1.3.13 单击所需要的输入信号源模块Sine Wave
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P63_7921.jpg?sign=1739595106-1wA8Z1OLeF8DPRvJ5AZRMyvlownimeZ1-0-07cff35db09126791f539a09a0fdf812)
图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=1739595106-oFPNu0JDbV6b6YYFORkSwZY5xLF2sXxu-0-cb83aede21a7f86e2f501904e57024f2)
图1.3.15 步骤5的实现过程
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P64_7929.jpg?sign=1739595106-ixn2Mmxdjo0inpvLRJQh7g8DRdrTIeh2-0-5360a09893c9370e4b272359855a1fe5)
图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=1739595106-X4TPvKvTVfeuVWdprPGqpG4oqlGjnz3j-0-5e31a8d9702e1d73940eb62bc306402e)
图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=1739595106-nAqurMA7kuiiBKW8fuMfYKlPT1eymR65-0-3b001bdcf32d725d3a3359b7460aa646)
图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=1739595106-Wo9wvBaErH1ECHCWXYZ6QzpfdFPOrE0b-0-554786daad81b7e10788c75f66172baf)
图1.3.19 选定单个对象
如果选定多个对象,可以按下Shift键,然后再单击所需选定的模块;或者用鼠标拉出矩形虚线框,将所有待选模块框在其中,则矩形框中所有的对象均被选中,如图1.3.20所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P65_7950.jpg?sign=1739595106-6wf24D1gC7UcNW4xmOClhRg2h8qtrY0o-0-2aa6bcfd0c4b7c8ed4df4ee197203f09)
图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=1739595106-KbfKskJ9Dkm9OjTBcM6jBO1s3EDuktWz-0-cae49e98ff6f745bc79bafaf3de76c2a)
图1.3.21 选择菜单Edit→SelectAll
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P65_7958.jpg?sign=1739595106-9oYUUiLZQV5qbln674SmBMTKTF16BWhy-0-f08352f004c3c0ce060243dde6efa2c1)
图1.3.22 右击选择SelectAll
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P65_7961.jpg?sign=1739595106-H4h6qhWkAu4yZ8Al0NwMtrwPg2csp2w7-0-360a9f26c7243ffa7e3d1032113d8842)
图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=1739595106-OfTe6nZW18rl8oSnpeKHivN0FcaEjOYJ-0-1489d1456e4f0cd1c41ccd481c4267b4)
图1.3.24 信号线分支操作示意图
3.信号线文本注释
1)添加文本注释
双击需要添加文本注释的信号线,则出现一个空的文字填写框,在其中输入文本。
2)修改文本注释
单击需要修改的文本注释,出现虚线编辑框即可修改文本。