创建简单模型

您可以使用 Simulink® 来对系统建模,然后仿真该系统的动态行为。本教程中创建简单模型所使用的基本方法也适用于创建更复杂的模型。此示例对简化的汽车运动进行仿真。当踩下油门踏板时,汽车通常处于行进状态。松开踏板后,汽车怠速并停下来。

Simulink 模块是定义模块输入和模块输出之间数学关系的模型元素。要创建这个简单模型,您需要四个 Simulink 模块。

模块名称模块目的模型目的Pulse Generator为模型生成输入信号表示加速踏板

Gain将输入信号乘以常量值计算踩下加速踏板后如何影响汽车的加速度

Integrator, Second-Order将输入信号积分两次根据加速度计算汽车位置

Outport指定一个信号作为模型的输出指定汽车位置做为模型的输出

此模型的仿真过程是将一个简短的脉冲信号积分两次,形成一个斜坡。结果显示在一个示波器窗口中。输入脉冲表示是否踩下油门踏板 - 1 表示踩下,0 表示未踩下。输出斜坡表示与起点之间的距离增加。打开新模型

使用 Simulink Editor 构建模型。

启动 MATLAB®。在 MATLAB 工具条上,点击 Simulink 按钮

点击 Blank Model 模板。

Simulink Editor 打开。

从 Simulation 选项卡中,选择 Save > Save as。在 File name 文本框中,输入您的模型的名称。例如,simple_model。点击 Save。模型使用文件扩展名 .slx 进行保存。打开 Simulink库浏览器

Simulink 在库浏览器中提供了一系列按功能分类的模块库。下面是大多数工作流常用的一些模块库:

Continuous - 表示具有连续状态的系统的模块

Discrete - 表示具有离散状态的系统的模块

Math Operations - 实现代数和逻辑方程的模块

Sinks - 存储并显示所连接信号的模块

Sources - 生成模型的驱动信号值的模块

在 Simulation 选项卡中,点击 Library Browser 按钮

将库浏览器设置为始终在其他桌面窗口前端。在 Simulink 库浏览器工具栏上,选择 Stay on top 按钮

要浏览模块库,请从左窗格中选择一个类别,然后选择一个功能区。要搜索所有可用的模块库,请输入搜索词。

例如,查找 Pulse Generator 模块。在浏览器工具栏的搜索框中输入 pulse,然后按 Enter。Simulink 将在模块库中搜索名称或说明中包含 pulse 的模块,然后显示这些模块。

获取模块的详细信息。右键点击 Pulse Generator 模块,然后选择 Help for the Pulse Generator block。Help 浏览器随即打开并显示该模块的参考页。

模块通常有几个参数。您可以通过双击该模块来访问所有模块参数。将模块添加到模型

要开始构建模型,请浏览库并添加模块。

从 “Sources” 库中,将 Pulse Generator 模块拖到 Simulink Editor 中。您的模型中将出现 Pulse Generator 模块的副本,还有一个文本框用于输入 Amplitude 参数的值。输入 1。

参数值在整个仿真过程中保持不变。

使用相同的方法将以下模块添加到模型中。

模块库参数Gain“Simulink/Math Operations”Gain: 2

Integrator, Second-Order“Simulink/Continuous”Initial condition: 0

Outport“Simulink/Sinks”Port number: 1

复制现有 Outport 模块,然后使用键盘快捷方式将其粘贴到另一个点,从而添加第二个 Outport 模块。

您的模型现在已经包含您需要的模块。

通过点击并拖动每个模块来排列模块。要调整模块大小,请拖动一个角。

连接模块

通过在输出端口和输入端口之间创建线条来连接模块。

点击 Pulse

Generator 模块右侧的输出端口。

该输出端口和所有适合连接的输入端口都将突出显示。

点击 Gain 模块的输入端口。

Simulink 用线条连接模块,并用箭头表示信号流的方向。

将 Gain block 的输出端口连接到 Integrator, Second-Order 模块的输入端口。

将 Integrator, Second-Order 模块的两个输出连接到两个 Outport 模块。

保存模型。在 Simulation 选项卡中,点击 Save 按钮。

添加信号查看器

要查看仿真结果,请将第一个输出连接到一个 Signal

Viewer。

点击信号。在 Simulation 选项卡中的 Prepare 下,点击 Add Viewer。选择 Scope。信号上会出现查看器图标,并打开一个示波器窗口。

您可以随时通过双击该图标打开示波器。运行仿真

定义配置参数后,即可进行模型仿真。

在 Simulation 选项卡中,通过更改工具栏中的值来设置仿真停止时间。

默认停止时间 10.0 适合此模型。此时间值没有单位。Simulink 中的时间单位取决于方程的构造方式。此示例对简化的汽车运动进行 10 秒的仿真 - 其他模型的时间单位可以是毫秒或年。

要运行仿真,请点击 Run 按钮

仿真开始运行并在查看器中生成输出。

细化模型

此示例使用现有模型 moving_car.slx,并基于此运动模型对接近传感器建模。在这种情况下,数字传感器用于测量汽车与 10 米(30 英尺)外的障碍物之间的距离。模型基于下列条件来输出传感器的测量值和汽车的位置值:

汽车在到达障碍物时会紧急刹车。

在现实世界中,传感器对距离的测量不够精确,从而导致随机数值误差。

数字传感器以固定时间间隔运行。更改模块参数

要开始,请打开 moving_car 模型。在 MATLAB 命令行中,输入:

open_system('moving_car.slx')

您首先需要对在汽车位置到达 10 时的紧急刹车进行建模。Integrator, Second-Order 模块有用于此目的的参数。

双击 Integrator, Second-Order 模块。将出现 Block Parameters 对话框。

选择 Limit x,然后为 Upper limit x 输入 10。参数的背景色发生变化以指示模型存在未应用的修改。点击 OK 应用更改并关闭对话框。添加新模块和连接

添加一个用来测量与障碍物之间距离的传感器。

修改模型。根据需要展开模型窗口,以容纳新模块。

求实际距离。要想求出障碍物位置和车辆位置之间的距离,需要从 “Math Operations” 库中添加 Subtract 模块。还要从 “Sources” 库中添加 Constant 模块来为障碍物的位置设置常量值 10。

对真实传感器中常见的不完美测量进行建模。使用 “Sources” 库中的 Band-Limited White Noise 模块产生噪声。将 Noise power 参数设置为 0.001。通过使用 “Math Operations” 库中的 Add 模块将噪声添加到测量中。

对每 0.1 秒触发一次的数字传感器进行建模。在 Simulink 中,以给定时间间隔对信号进行采样需要一个样本和保持器。从 “Discrete” 库中添加 Zero-Order

Hold 模块。将该模块添加到模型后,将 Sample Time 参数更改为 0.1。

添加另一个 Outport,用来连接传感器输出。保留 Port number 参数的默认值。

连接新模块。Integrator,

Second-Order 模块的输出已连接到另一个端口。要在该信号中创建分支,请左键点击该信号以突出显示可供连接的端口,然后点击适当的端口。

为信号添加注释

将信号名称添加到模型中。

双击信号并键入信号名称。

要完成输入,请点击文本框外部。

重复上述步骤以添加下图中所示的名称。

比较多个信号

将 actual distance 信号与 measured distance 信号进行比较。

创建 Scope Viewer 并将其连接到 actual distance 信号。右键点击信号并选择 Create & Connect Viewer > Simulink > Scope。信号的名称显示在查看器标题中。

将 measured distance 信号添加到同一个查看器中。右键点击信号,然后选择 Connect to Viewer > Scope1。确保您连接到在上一步中创建的查看器。

运行模型。查看器显示两个信号:actual

distance(黄色)和 measured

distance(蓝色)。

放大图形以观察噪声和采样的影响。点击 Zoom 按钮 。左键点击并拖动鼠标框住您想放大查看的区域。

您可以反复放大以观察细节。

从图中可以看到,测量值可偏离实际值达 0.3 米之多。此信息在设计安全功能(例如碰撞警告)时非常有用。

另请参阅

模块

相关主题

如何建立分类模型matlab,创建简单模型 - MATLAB Simulink - MathWorks 中国相关推荐

  1. ssas ssrs_如何使用SSAS表格模型数据库创建简单的SSRS报告

    ssas ssrs In this article, we will show how to create a simple SQL Server Reporting Services report ...

  2. matlab 创建简单的深度学习网络用于分类

    matlab 2018以上版本.如果不是2018以上版本,需要单独安装工具箱Deep learning toolbox 此示例说明如何创建和训练简单的卷积神经网络来进行深度学习分类.卷积神经网络是深度 ...

  3. 神经网络算法有哪些模型,神经网络的简单模型是

    有哪些深度神经网络模型? 目前经常使用的深度神经网络模型主要有卷积神经网络(CNN).递归神经网络(RNN).深信度网络(DBN).深度自动编码器(AutoEncoder)和生成对抗网络(GAN)等. ...

  4. matlab存储问题模型,保存模型 - MATLAB Simulink - MathWorks 中国

    MDL 文件和字符编码 当您保存模型时,将使用当前字符编码方式对模型文件中存储的文本进行编码.对于 MDL 文件,如果您原来保存模型时使用的编码方式与当前编码方式不同,可能会导致模型损坏. 如果您更改 ...

  5. 如何用MATLAB绘制真值表,编写真值表 - MATLAB Simulink - MathWorks 中国

    编写真值表 在创建新真值表后,您就可以对它进行编写以根据您的设定执行.要编写真值表,您需要添加条件.决策和动作.有关创建真值表的详细信息,请参阅使用真值表对组合逻辑建模. 真值表仅在 Simulink ...

  6. matlab对信号积分,对信号求积分 - Simulink - MathWorks 中国

    说明 Integrator 模块输出其输入信号相对于时间的积分值. Simulink® 将 Integrator 模块作为具有一种状态的动态系统进行处理.模块动态由以下方程指定: {x˙(t)=u(t ...

  7. matlab散点图加图例,将图例添加到图 - MATLAB Simulink - MathWorks 中国

    创建简单的图例 创建一个具有线图和散点图的图窗.为每个图添加具有说明的图例.将图例标签指定为 legend 函数的输入. figure x1 = linspace(0,5); y1 = sin(x1/ ...

  8. 【电机】使用Simulink建立BLDC反电动势测量的简单模型

    1.前言 本文是基于Matlab官方的视频进行的,为了防止自己忘记了操作过程,也为了方便后续查询,故记录一下我是怎么建立BLDC反电动势模型的. 2.电机模型 电机模型为Simscape-Electr ...

  9. matlab将模型解封装,模型保护 - MATLAB Simulink - MathWorks 中国

    当您要与第三方共享模型而又不能泄露知识产权时,请对模型进行保护. Test your protected model by comparing it to the original model. At ...

最新文章

  1. 原创 | 工业场景中的预测性维护
  2. Linux -- cal/bc/LANGE与帮助文档
  3. python读数据-如何用 Python 读取数据?
  4. Deep learning From Image to Sequence
  5. Kubernetes 网络概念及策略控制(叶磊)
  6. matlab图像输出表格_matlab 图像输出3维字
  7. 测试环境安装配置obproxy(社区版)
  8. 回车,根据编码获取相应记录,然后再将这录绑定到AutoList
  9. linux硬盘分区PPT,linux下的硬盘分区详解.doc
  10. Android 四大组件学习之Service四
  11. Linux自学之旅-安装篇(格式化)
  12. WordPress主题 Modown V3.0+Erphpdown9.7.1虚拟素材资源付费下载响应式主题网站模板
  13. 荒野大镖客ol 服务器位置,荒野大镖客2ol盗贼在什么位置?盗贼具体位置分享
  14. 手机号码归属地查询接口大全(七种)
  15. 前端工程师简历怎么写
  16. C: warning: too many arguments for format [-Wformat-extra-args]
  17. 台式计算机网络共享,教大家怎么把电脑网络共享给手机上网
  18. SpringBoot中使用MyBatis-Plus是如何解决Invalid bound statement (not found)这个异常的
  19. “天鹅”类谜解大全!(转载)
  20. airsim手动控制无人机-详细搭建过程

热门文章

  1. Java 如何将String转化为Int
  2. centos7.3安装tomcat报Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  3. leetcode(2)495——提莫攻击(C++),运算符优先级(+=,?,+,-)
  4. 将ArXiv中的Reference导入EndNote
  5. Verilog中的加法器(半加器,全加器,串行、超前进位加法器)
  6. html oninput的作用,html范围滑块 - oninput在IE 11中不起作用
  7. spring boot 转xml格式报错解决方法_芋道 Spring Boot MyBatis 入门(一)之 MyBatis + XML...
  8. 用python向mongodb插入数据_Python操作MongoDB数据库(一)
  9. kindle刷多看系统_疑问解答 | kindle真的能护眼吗?
  10. STM32 之五 Core Coupled Memory(CCM)内存