当前位置: 首页 > news >正文

Simulink 最基础教程(一)

1.1基本概念
在这里插入图片描述

一个典型的Simulink模型大致如上图这样:
1)模块 block:图中画圈的那些,每个模块可以完成一些特定的任务,类似MATLAB中函数的概念。软件提供了很多模块,当然也可以自定义新的模块
2)信号线 signal line:连接模块的线条,类似MATLAB中变量的概念。信号线是有箭头的,沿箭头方向经过模块,就相当于调用这个模块(函数),对信号线(变量)做了一次运算。
3)模型 model:由模块,和模块间的信号线,共同组成。MATLAB中写一个脚本来完成一堆任务,Simulink中就是搭个模型来完成计算。简单对比:
MATLAB	Simulink
函数	模块
脚本	模型
变量	信号线

在这里插入图片描述

1.2 启动 Simulink
最简单的启动方法之一,是在 MATLAB 界面上找到 Simulink 按钮,在弹出的菜单中,选择空白模型。除了空白模型,当然还有其他模板,但这些在最基础教程中都不会用到。
在这里插入图片描述

1.3 Simulink 界面
一个典型的 Simulink 界面,按照蓝色线条划分,分为三个部分:
1)实线框:里面写着untitled,这是文件名,或者模型名。
2)虚线以上:一般称为工具栏,用来进行各种设置的。
19a及以前,这块是菜单结构,19b及之后,这块改为标签结构,可能造成老用户找不到相关工具。不过,工具的快捷键基本没改过,因此本教程中会尽量用快捷键来操作。
3)虚线以下:一般称为画布。一些常用操作:鼠标滚轮用来缩放视角,”空格“会自动缩放到最佳。
在这里插入图片描述

随后是红色部分,框出了一些最常用的工具:
1)文件存取,这块和绝大多数软件一样,新建、保存、打开。
2)模块库,点击后,会出现 Simulink 自带的模块。对初学者而言,新建模型后,第一件事往往就是打开模块库。
3)模型配置。这个三角点开后会有很多工具,其中最常用的是model configuration,快捷键是 ctrl+e。这个用于配置“模型参数“,模型参数是啥?后面再讲。
4)运行区域,当模型搭建完成后,就要去运行模型,求解模型,那么就是Run按钮了。快捷键是 ctrl+t。其他几个按钮,暂停、停止就是字面意思,也都很好理解。step是调试用的类似MATLAB里的debug。
5)显示采样时间(sample time),是个很常用的 debug 工具,会在后续进一步用到。

1.4两个例子
1.4.1图形化编程
在这里插入图片描述

在之前介绍的 Simulink 界面基础上,按照红色箭头,打开模型库、拖入模块到画布、连接信号线、点击Run,就实现了整个模型的建立和仿真。双击示波器(scope模块),就能看到曲线。

下面来稍微解释一下这个模型的过程:
1)constant模块,是一个输出模块,或者源模块,特点是只有输出,没有输入。输出的是一条始终为1,不随时间变化的直线y(t)=1
2)integrator模块,是一个运算模块,特点是有输入,也有输出。其功能是对时间积分,即对输入的曲线y(t) 进行积分得到 int(y(t)dt)+C。在这里,输入是y(t)=1,定积分取C=0,因此输出就是 y(t)=t
3)scope模块,是一个输入模块,或者终点模块,特点是只有输入,没有输出。这类模块的功能一般都是用于显示结果,例如这个scope模块,就是显示y(t)曲线,因此示波器双击后,出现曲线y(t)=t(严格说是直线),当然只有t=0~10的这段。

通过这个例子,希望说明的是 Simulink 的图形化编程思路:
1)模型由模块,和模块之间的连线组成
2)信号线,其本质是一个与时间t相关的函数 y(t)
3)模块分为输出模块、运算模块、输入模块三种
4)输出模块给信号线赋值y(t),例如constant模块输出 y(t)=1
5)运算模块对信号线的函数进行运算,例如integrator模块输出和输入的关系为对时间t积分
6)输入模块用于显示y(t)的某项性值,例如scope模块显示 y(t) 的时域函数曲线

1.4.2求解常微分方程组

随手写一个常微分方程组:
y1’=y2+1
y2’=y1+y2
y1(0)=0
y2(0)=0
然后搭建一个Simulink模型:

这里大多数模块与上一个例子一样,唯一多用到的是sum模块。如果按照上一个例子中的分析,那么就很容易发现,integrator模块的输出信号,正是我们要找的y1和y2,通过scope模块就能看到这两个信号的结果。由此,这里出现Simulink的一个应用场景:求解常微分方程组。

具体的搭建过程是:
1)将方程(组)写成标准形式 y‘=f(y,t)
其中,y可以是一个向量,即y=[y1(t) y2(t) …]
2)对每一个yi分配一个integrator模块,并视该模块输出为yi(t)
3)搭建 f(y,t),这块是最有技术含量的,如果 f 的表达形式非常复杂,就不会那么容易了。可以说,学习 Simulink 的过程,就是不断掌握更复杂 f 的搭建方法
4)将 f 的输出接到integrator模块的输入端

1.5小结
这结非常长,原因是我希望在一开始就说明 Simulink 的思路——图形化编程:
信号线+模块=模型
信号线=函数y(t)
模块=对函数y(t)运算
至于最开始的界面简介,只是用来帮助搭建那两个例子,反而显得不是那么重要了。

相关文章:

Simulink 最基础教程(一)

1.1基本概念 一个典型的Simulink模型大致如上图这样: 1)模块 block:图中画圈的那些,每个模块可以完成一些特定的任务,类似MATLAB中函数的概念。软件提供了很多模块,当然也可以自定义新的模块 2&#xff0…...

微信小程序:单行输入和多行输入组件

微信小程序提供了两种输入类型的输入框组件&#xff0c;分别是单行输入框 <input> 和多行输入框 <textarea>。 1. 单行输入组件&#xff08;input&#xff09; 单行输入框 <input> <input> 是一个用于收集用户输入的组件&#xff0c;主要用于收集单行…...

1024程序员

听说今天可以拿勋章&#xff0c;嘿嘿...

【Segment Anything Model】八:修改SAM源码做分类任务

🍉 博主微信 cvxiayixiao 🍓 【Segment Anything Model】计算机视觉检测分割任务专栏。 链接 🍑 【公开数据集预处理】特别是医疗公开数据集的接受和预处理,提供代码讲解。链接 🍈 【opencv+图像处理】opencv代码库讲解,结合图像处理知识,不仅仅是调库。链接 文章目…...

Java后端开发——实现登录验证程序

一、实现一个简单登录验证程序 实现一个简单的用户登录验证程序&#xff0c;如果用户名是 abc &#xff0c;密码是 123&#xff0c;则显示欢迎用户的信息&#xff0c;否则显示“用户名或密码不正确”。 【分析】 该案例采用 JSP 页面只完成提交信息和验证结果的显示&#xff…...

CSS高频面试题

1.行内元素有哪些?块级元素有哪些?空元素有哪些&#xff1f;CSS的盒模型? 块级元素&#xff1a;div, p, h1-h6,form, ul ,li行内元素&#xff1a;a, b, br, span, i, input, select行内块级元素&#xff1a;img , input空元素&#xff1a;即没有内容的HTML元素&#xff0c;…...

解决matlab报错“输入参数的数目不足”

报错语句&#xff1a;tanh((peakNums-parameter)/2) 报错提示&#xff1a;输入参数的数目不足 运行环境&#xff1a;matlab2021b 分析原因&#xff1a; 当执行peakNums - parameter时&#xff0c;如果peakNums和parameter都是向量&#xff0c;那么这并不一定意味着会得到对应…...

使用python_opencv比较图像差异/使用python_opencv找出两张图像的差异范围

目录 1 创建conda环境 2 安装python库 2.1 报错 ModuleNotFoundError: No module named numpy 3 image_diff.py...

NOIP2023模拟1联测22 爆炸

NOIP2023模拟1联测22 爆炸 题目大意 ​ 自己看 思路 当一个炸弹被引爆后&#xff0c;它的方向是固定的。如果被竖着引爆&#xff0c;那么应该选择横着引爆&#xff0c;否则选择竖着引爆&#xff0c;这是显然 的。 考虑对于每个炸弹 ( i , j ) (i , j) (i,j) 将第 i i i 行…...

http post协议实现简单的rpc协议,WireShark抓包分析

文章目录 1.http 客户端-RPC客户端1.http 服务端-RPC服务端3.WireShark抓包分析3.1客户端到服务端的HTTP/JSON报文3.2服务端到客户端的HTTP/JSON报文 1.http 客户端-RPC客户端 import json import requests# 定义 RPC 客户端类 class RPCClient:def __init__(self, server_url…...

1024程序员节

一年一年真快啊&#xff0c;...

嵌入式--->怎样选择编译语言,C C++或是Rust?

C 老牌语言&#xff0c;不可替代&#xff0c;速度和资源占用都是嵌入式领域着重考虑的 Rust 作为新生语言&#xff0c;已经成长到可以和C进行竞争的地步&#xff0c;不论是速度还是资源占用看&#xff0c;还是安全性 C 嵌入式开发使用C的思想&#xff0c;可以极大地简化代码&am…...

一起学数据结构(12)——归并排序的实现

1. 归并排序原理&#xff1a; 归并排序的大概原理如下图所示&#xff1a; 从图中可以看出&#xff0c;归并排序的整体思路就是把已给数组不断分成左右两个区间&#xff0c;当这个区间中的数据数量到达一定数值时&#xff0c;便返回去进行排序&#xff0c;整体的结构类似二叉树…...

读书笔记之《敏捷测试从零开始》(一)

大家好&#xff0c;我是rainbowzhou。 子曰&#xff1a;学而时习之&#xff0c;不亦说乎&#xff1f;今天我想和大家分享一本测试书籍——《敏捷测试从零开始》。以下为我的读书笔记&#xff1a; 精彩片段摘录&#xff1a; 焦虑往往来自于对比&#xff0c;当你在自己的圈子里面…...

视频亮度太低了,如何调高

充足、均匀、稳定的光亮对于视频制作是至关重要的&#xff0c;在现实生活中&#xff0c;不可预见的天气变化和拍摄地方的阴暗常常给我们留下暗淡无光的视频片段。 如果你的视频太暗想知道如何使它变亮&#xff0c;且又不知道使用哪个工具&#xff0c;那你无需担心&#xff0c;因…...

Xubuntu16.04系统中安装create_ap创建无线AP

1.背景说明 在Xubuntu16.04系统的设备上安装无线WIFI模块后&#xff0c;想通过设备自身的无线AP&#xff0c;进行和外部设备的连接&#xff0c;需要安装create_ap软件&#xff0c;并设置无线AP的名称和密码&#xff0c;并设置为开机自启动。 create_ap是一个用于在Linux系统上创…...

WPF 设置全局静态参数

可以使用system官方库来设置参数 引入system xmlns:system"clr-namespace:System;assemblymscorlib"设置参数资源 <Window.Resources><system:Double x:Key"ButtonWidth">90</system:Double></Window.Resources>使用参数资源 &l…...

Leetcode链表问题汇总

目录 [2. 两数相加](https://leetcode.cn/problems/add-two-numbers/)[206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/)[206. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/)[19. 删除链表的倒数第 N 个结点](https://leetcode.cn/p…...

基于卷的磁盘扫描算法设计

1、设计目的 常规情况下&#xff0c;当我们扫描计算机的硬盘时&#xff0c; 通常会使用诸如FindFirstFile/FindNextFile(Windows)&#xff0c;或者opendir/readdir(Linux)遍历扫描的目录。 一般情形下&#xff0c;由于文件数量相对较少&#xff0c;文件夹层次低&#xff0c;扫…...

计算机组成原理-存储器概念

计算机组成原理-存储器 存储系统的基本概念 1.层次结构 可以直接被CPU读取: 高速缓存:cache主存储器: 主存和内存 辅助存储器: 辅存和外存 2.分类 1.按层次结构划分 如上面所示 2.按存储介质 半导体存储器磁表面存储器光存储器 3.按信息可更改性 r/w存储器ROM(只读存储器) 4…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...