matlab之simulink仿真入门

matlab之simulink仿真入门MatlabSimulink仿真工具的应用****Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。使用Simulink来建模、分析和仿真各种动态系统(包括连续系统、离散系统和混合系统),将是一件非常轻松的事情。它提供了一种图形化的交互环境,只需用鼠标拖动的方法便能迅速地建立起系统框图模型,甚至不需要编写一行代码。由于Simulink具有强大的功能与友好的用户界面,因此它已

大家好,又见面了,我是你们的朋友全栈君。

Matlab Simulink仿真工具的应用

Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。使用Simulink来建模、分析和仿真各种动态系统(包括连续系统、离散系统和混合系统),将是一件非常轻松的事情。
它提供了一种图形化的交互环境,只需用鼠标拖动的方法便能迅速地建立起系统框图模型,甚至不需要编写一行代码。
由于Simulink具有强大的功能与友好的用户界面,因此它已经被广泛地应用到诸多领域之中,如:
(1)通讯与卫星系统。
(2)航空航天系统。
(3)生物系统。
(4)物流系统。
(6)制造系统。
(7)金融系统

simulink作为matlab中一个强大的库,在自动控制方面有着不可替代的作用。鉴于网上已有大量教材,仅提供一个小例子,以为入门。基础理论可参考这里

  • 打开matlab2014a(我用的是这个啦),点击simulink库。
  • 漫长的等待后……出现:
    这里写图片描述
  • Simulink模块库浏览器可以按照类型选择合适的系统模块、获得系统模块的简单描述以及查找系统模块等,并且可以直接将模块库中的模块拖动或者拷贝到用户的系统模型中以构建动态系统模型。
    这里写图片描述
  • SIMILINK模块库按功能进行分为以下8类子库:
    Continuous(连续模块)
    Discrete(离散模块)
    Function&Tables(函数和平台模块)
    Math(数学模块)
    Nonlinear(非线性模块)
    Signals&Systems(信号和系统模块)
    Sinks(接收器模块)
    Sources(输入源模块)

这里用一个非常简单的例子介绍如何建立动态系统模型。 此简单系统的输入为一个正弦波信号,输出为此正弦波信号与一个常数的乘积。 要求建立系统模型,并以图形方式输出系统运算结果。

已知系统的数学描述为:
u ( t ) = s i n ( t ) , t ≥ 0 u(t)=sin(t),t \geq0 u(t)=sin(t),t0
y ( t ) = a u ( t ) = a s i n ( t ) , a ≠ 0 y(t)=au(t)=asin(t),a\ne0 y(t)=au(t)=asin(t),a=0

  • 单击新建模型按钮,即可打开:
    Simulink系统模拟编辑器窗口。

  • 依次将公共模块库和专业模块库中各控件通过鼠标左键拖动到Simulink系统模拟编辑器窗口中。

  • 系统输入模块库Sources中的Sine Wave控件:产生一个正弦波信号。

  • 数学库Math Operations中的Gain控件:将信号乘上一个常数(即信号增强)。

  • 系统输出Sink中的Scope控件(示波器控件):图形方式显示结果。
    -已放入控件后的Simulink框图:
    这里写图片描述

  • 连接控件

在选择构建系统模型所需的所有模块后,需要按照系统的信号流程将各系统模块正确连接起来。连接系统模块的步骤如下:
(1) 将光标指向起始块的输出端口,此时光标变成“+”。
(2) 单击鼠标左键并拖动到目标模块的输入端口,在接近到一定程度时光标变成双十字。这时松开鼠标键,连接完成。完成后在连接点处出现一个箭头,表示系统中信号的流向。

  • 复制控件

如果需要几个同样的模块,可以使用鼠标右键单击并拖动某个块进行拷贝。也可以在选中所需的模块后,使用Edit菜单上的Copy 和Paste 或使用热键Ctrl+C和Ctrl+V完成同样的功能。

  • 连线分支与连线改变

在某些情况下,一个系统模块的输出同时作为多个其它模块的输入,这时需要从此模块中引出若干连线,以连接多个其它模块。对信号连线进行分支的操作方式为:使用鼠标右键单击需要分支的信号连线(光标变成“+”),然后拖动到目标模块。

  • 控件参数设置

当用户按照信号的输入输出关系连接各控件之后,系统模型的创建工作便已结束。
为了对动态系统进行正确的仿真与分析,必须设置正确的控件参数。
控件参数的设置方法如下:
1.双击控件图标,打开控件参数设置对话框。
2.在参数设置对话框中设置合适的控件参数。

这里写图片描述

  • 仿真参数设置

1、仿真起止时间设置
在缺省情况下,Simulink默认的仿真起始时间为0s,仿真结束时间为10 s。
对于简单系统,当时间大于25时系统输出才开始转换,因此需要设置合适的仿真时间。
设置仿真时间的方法有两种:
(1)选择菜单Simulation中的Model configuration Parameters(或使用快捷键Ctrl+E),打开仿真参数设置对话框,在Solver选项卡中“Simulation time”栏设置系统仿真时间区间。设置系统仿真起始时间为0 s、结束时间为100 s。
(2)Simulink系统模拟编辑器窗口上方的仿真时间设置栏。
2、仿真步长设置
在使用Simulink对简单系统进行仿真时,影响仿真结果输出的因素有仿真起始时间、结束时间和仿真步长。对于简单系统仿真来说,不管采用何种求解器,Simulink总是在仿真过程中选用最大的仿真步长。
最大步长默认取值为auto,设置仿真步长的方法为:
选择菜单Simulation中的Model configuration Parameters(或使用快捷键Ctrl+E),打开仿真参数设置对话框,在Solver选项卡中“Solver options”栏的max step size设置系统仿真时间区间。

  • 运行仿真

当对系统中各控件参数以及系统仿真参数进行正确设置之后,单击系统模型编辑器上的Run图标(黑色三角)或选择Simulation菜单下的Run便可以对系统进行仿真分析。
-显示系统仿真结果

这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136117.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jemter安装mysql数据驱动JDBC

    jemter安装mysql数据驱动JDBC

    2021年5月23日
    103
  • 数据库 分区表详解

    数据库 分区表详解如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了。1、数据库中某个表中的数据很多。很多是什么概念?一万条?两万条?还是十万条、一百万条?这个,我觉得是仁者见仁、智者见智的问题。当然数据表中的数据多到查询时明显感觉到数据很慢了,那么,你就可以考虑使用分区表了。如果非要我说一个数值的话,我认为是100万条。2、但是,数据多了并不是创建分区表的惟一条件,哪怕你有一千万条记录,但

    2022年6月6日
    35
  • pycharm设置c语言注释颜色,pycharm设置注释颜色的方法[通俗易懂]

    pycharm设置c语言注释颜色,pycharm设置注释颜色的方法[通俗易懂]pycharm设置注释颜色的方法操作方法如下所示:File–>Settings–>Editor–>Color&Fonts–>LanguageDefaults–>Linecomment–>设置颜色即可以上这篇pycharm设置注释颜色的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。时间:2018-05-22…

    2022年8月25日
    4
  • PHP 的解压缩ZipArchive中的extractTo()方法 LINUX+nginx环境中解压zip时文件丢失的问题

    PHP 的解压缩ZipArchive中的extractTo()方法 LINUX+nginx环境中解压zip时文件丢失的问题

    2021年12月15日
    47
  • ps2无线手柄连接arduino的使用方法

    ps2无线手柄连接arduino的使用方法首先在https://github.com/madsci1016/Arduino-PS2X这里下载ps2x的库文件。将PS2X_lib放到库文件目录下。接线方法如下,代码部分#definepressurestrue的意思是让上下左右的按键可以度数,按下时analogRead值为255.#definerumbletrue的意思是开启震动…

    2022年5月20日
    305
  • sql declare的用法_oracle declare语法

    sql declare的用法_oracle declare语法平时写SQL查询、存储过程都是凭着感觉来,没有探究过SQL的具体语法,一直都是按c#那一套往SQL上模仿,前几天项目中碰到一个问题引起了我对declare定义变量的作用域的兴趣。大家都知道c#中的局部变量,在if中如果我们定义一个变量的话他的作用到if结束为止,if外是不识别这个变量的,else里都不能使用,简单的写一下。if (true){   Int32 i = 1;   Co…

    2022年8月20日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号