![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=1739439745-xeIZ8zAuXLEvF43IanPZQRu5rKmUhTaq-0-170e437a9f93da45f680b0173e40e36b)
1.常用模块库
常用模块库中的模块是Simulink所有模块库中使用频率最高的模块合集,主要是为了方便用户以最快的速度建立模型。常用模块库包含如图1.3.1所示的成员,模块功能如表1.3.2所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P55_6451.jpg?sign=1739439745-YCbjulRRDzlI53xkTDPSJbXevZtGxKc5-0-25ea31fda66115465d65dabb2a8f1b11)
图1.3.1 常用模块库
表1.3.2 常用模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T56_11823.jpg?sign=1739439745-faHMVW6LZvYRp4bg0fw3rnIcsEOleZkV-0-7fc6580ea12f4feff3f1472e6ce6bcbf)
2.连续模块库
连续模块库中的模块如图1.3.2所示,它包含了搭建连续系统所需的绝大部分模块,这些模块的功能如表1.3.3所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P56_6728.jpg?sign=1739439745-iTh8UPsBmaWXT6XALUWsUBJYfb8D43CK-0-c48cbbc814481e9cd2b0eb6bd87c74b3)
图1.3.2 连续模块库
表1.3.3 连续模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T56_11826.jpg?sign=1739439745-nC65lLTvWDHu3AhdzWeZZEklHEpDWgxT-0-43a99b15c9a8d713b311852f82f1ace1)
3.离散模块库
离散模块库中的模块如图1.3.3所示。其功能如表1.3.4所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P57_6904.jpg?sign=1739439745-LQANEMK9eGF2vDfNmRKUnLsuc4jsGnQI-0-f9e3ae0936d6b31b56e9cfaa63b6e2eb)
图1.3.3 离散模块库
表1.3.4 离散模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T57_11830.jpg?sign=1739439745-5LvmqCJZYX5h8lZ12qF3dGttdXz4ffov-0-00030a0623ab0ec1a0d19aab71235c6a)
4.数学运算模块库
数学运算模块将很多数学运算封装成模块的形式,使数学运算操作大大简化,减少了很多程序设计上的烦琐过程。此模块库所包含的模块如图1.3.4所示。其功能如表1.3.5所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P58_7162.jpg?sign=1739439745-vrPLyZkaYoG827rXCcQicx3pfjIvepIp-0-c5d6154c873427a4924c4f2f20569869)
图1.3.4 数学运算模块库
表1.3.5 数学运算模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T58_11833.jpg?sign=1739439745-9aPOEVazMC5OYsXFey89N2nxKk7PZQH7-0-dae1d67f1c73c8c91af32f504f303662)
5.信号源模块库
信号源模块库如图1.3.5所示。其功能如表1.3.6所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P59_7421.jpg?sign=1739439745-2gx95ZfgwbdV5jZQGcHhHFPURaJUDAzP-0-f17e2f201242882c928127deb6ed6e37)
图1.3.5 信号源模块库
表1.3.6 信号源模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T59_11836.jpg?sign=1739439745-nB2FFGrNlI9ey96JdpRXY78LLRtYNFN0-0-36e307e365b4c046cc944c066e4fd8a7)
6.信号接收模块库
信号接收模块库如图1.3.6所示。其功能如表1.3.7所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P59_7676.jpg?sign=1739439745-fjw3TgBwFs1qT2TkKQrKqeusd7ytA7ai-0-8f2b77a380d2a8ef370f72c74b2a8c3c)
图1.3.6 信号接收模块库
表1.3.7 信号接收模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T60_11839.jpg?sign=1739439745-fLFCSwKCUAnqhB8wVVBJNUoa8itNiOZc-0-28780c78fdb91202747248f93c9d80a7)
7.用户自定义模块库
用户自定义模块库如图1.3.7所示。其功能如表1.3.8所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P60_7813.jpg?sign=1739439745-bRDk8OpjYtKV2yZDjob2QaKK5OXbceSs-0-a9bd211124f0b2e6494b11f77f1f0277)
图1.3.7 用户自定义模块库
表1.3.8 用户自定义模块库
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-T60_11842.jpg?sign=1739439745-Sm9FTp8MiAt3OLEdWz0p5Yx3WYzAdaYU-0-4aeafe0e9af427aaa5a86883641da5fb)
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=1739439745-fmWqLikHNiOqTQSnjQ9lSuxU4HrzREql-0-46a50cb6aed7c963c3654d1c3ba0eede)
图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=1739439745-deqjt0QX35HUlKNnUSiwBMm6PYMQNcVu-0-6f8c3563abe94974288b1e2fbe3fb3a8)
图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=1739439745-wvPBwIeU1MyNpCrecqBsaQYonv5Vla0b-0-f5853827a3d8b38f323238a1e11e0e1d)
图1.3.10 步骤2(b)的实现过程
通过步骤2所建立的模型窗口如图1.3.11所示,它由菜单、工具栏、模型浏览器窗口、模型框图窗口以及状态栏组成。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P62_7905.jpg?sign=1739439745-j1X9IGh34l7OHRwUnEuj5FONbvzcvwHY-0-257f5ee8115e23e539acc0c37f223480)
图1.3.11 模型窗口组成示意图
步骤3:从右侧子模块窗口中,直接单击Simulink下的Sources子模块库,便可看到各种输入源模块,如图1.3.12所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P62_7909.jpg?sign=1739439745-MItCxla1gSTJlkBTWmS7J4ZFs5MoT3ab-0-017a339c1adf825563811085ea09627a)
图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=1739439745-sUhAtoj3yCqNRHwyjkONMzbQPnn9CmHw-0-df3e3ff20c776a4632a5513fc53b0d5a)
图1.3.13 单击所需要的输入信号源模块Sine Wave
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P63_7921.jpg?sign=1739439745-KKVIqip38yrkk77Gv72LKD7O2RIRSHEK-0-39950751f8e78c0ff254579aff25438a)
图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=1739439745-TIApgsB7CvPjiTdOvsP0s85aFupNOWja-0-88b196d5d8771f4941174ad2aa878165)
图1.3.15 步骤5的实现过程
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P64_7929.jpg?sign=1739439745-vaZCZ401ZdJZbn8oEB50CPb5ODfqWa37-0-d0d09792c0e8a498e296ea6daece33aa)
图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=1739439745-iIONrgjhDVlXrzxS1w8y1G5gcqqFsxJR-0-f545108ac90eea9db4dc45006dd626bb)
图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=1739439745-GvIdhuW7BCcIxg1BKQgpkql2NiMI5vsj-0-9976b3a1d2070677d78a26128ed52043)
图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=1739439745-L3NRagV5CQkjuHsszzJstRnP4CQdEV0w-0-7de1be4af07d3638ad5a81b3b00b65fd)
图1.3.19 选定单个对象
如果选定多个对象,可以按下Shift键,然后再单击所需选定的模块;或者用鼠标拉出矩形虚线框,将所有待选模块框在其中,则矩形框中所有的对象均被选中,如图1.3.20所示。
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P65_7950.jpg?sign=1739439745-jvJrMkJADOTWZo62t8U0XRTiNqvjcyKL-0-ffcae7827040d8798044560fceb398d4)
图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=1739439745-nY5yIjokt5ooUkZb6N5PpLgHAqWZzJ6O-0-1c39b6353816d3d5f4abea123b84adfd)
图1.3.21 选择菜单Edit→SelectAll
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P65_7958.jpg?sign=1739439745-S8iICDRx8ElhZVmda92TvaNbqrziRopr-0-79323c96d0ed14533062d4cf15732899)
图1.3.22 右击选择SelectAll
![](https://epubservercos.yuewen.com/E02557/12023547304528306/epubprivate/OEBPS/Images/Figure-P65_7961.jpg?sign=1739439745-fqDxb3OHZxqf66FGbV2nFErZKXgRsjWK-0-f121826fc35bf3fda7f4d5aae7a91c2c)
图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=1739439745-ApfQtkaw0rfUmLWCDHUpZen4r0iZK6Ze-0-c386fc0d48058893a01fea57c03d7f6b)
图1.3.24 信号线分支操作示意图
3.信号线文本注释
1)添加文本注释
双击需要添加文本注释的信号线,则出现一个空的文字填写框,在其中输入文本。
2)修改文本注释
单击需要修改的文本注释,出现虚线编辑框即可修改文本。