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

Matlab simulink建模与仿真 第七章(表查询库)

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili

一、表查询库中的模块概览

二、表查询模块

        使用Lookup Table表查询模块,需要在配置窗口中建立x-y(自变量-因变量)离散数据对,x与y的维数应相同,x集(自变量列表)需要单调递增。

        如果输入表查询模块的信号值恰好在x集中存在,那么表查询模块会在离散数据对中查找该值对应的因变量,然后输出之;如果输入表查询模块的信号值不在x集中,那么表查询模块会根据插值规则(插值规则可选)推导出该值对应的因变量,然后输出之。

        可选的插值规则有如下几种:

        ①Interpolation-Extrapolation:输入值在x集范围内但x集没有的,使用线性内插法推导出因变量;输入值在x集范围外的,使用线性外插法推导出因变量。

        ②Interpolation-Use End Values:输入值在x集范围内但x集没有的,使用线性内插法推导出因变量;输入值在x集范围外的,直接以x集中距离输入值最近的自变量取值对应的因变量作为输出,简单地说,模块中的一维表在x集范围以外,因变量既不递增也不递减。

        ③Use Input Nearest:输入值在x集中没有的,直接以x集中距离输入值最近的自变量取值对应的因变量作为输出。

        ④Use Input Below:输入值在x集中没有的,直接以x集中距离输入值最近的且小于输入值的自变量取值对应的因变量作为输出。

        ⑤Use Input Above:输入值在x集中没有的,直接以x集中距离输入值最近的且大于输入值的自变量取值对应的因变量作为输出。

三、n维表查询模块

1、Lookup Table(2-D)二维表查询模块

(1)二维表查询模块是(一维)表查询模块在维度上的延伸,它有两个自变量输入和一个因变量输出,其自变量列表依然需要单调递增,x、y两个自变量列表分别有m、n个元素,因变量列表为m×n的二维矩阵z=f(x,y),每个x-y自变量组合各自对应矩阵z中的一个因变量。

(2)二维表查询模块的查表规则和(一维)表查询模块相似,仅仅是多了一个维度,这里不再赘述。

2、Lookup Table(n-D)n维表查询模块

(1)n维表查询模块是二维表查询模块在维度上的延伸,它有n个自变量输入和一个因变量输出,其自变量列表依然需要单调递增,因变量为n维矩阵,每个自变量组合各自对应n维矩阵中的一个因变量。

(2)创建n维表查询模块时,默认的维度是二维,可对其进行修改。

(3)如果仅用方括号和分号,是不能够表示高维矩阵的,对此可用如下方式定义高维矩阵,具体规则和二维矩阵元素的引用类似。

        <高维矩阵名>(<第一维序号列表>,<第二维序号列表>,<第三维序号列表>,...) = ……

(4)n维表查询模块的查表规则相比于二维表查询模块略有差别,这里不进行详细介绍。

四、预查询表模块

1、Interpolation Using Prelookup使用插值预查询表模块

(1)预查询表模块同样可以设置维数以及查表算法等,它的表格数据(只需填写因变量列表即可)可以选择从外部输入(Input port),也可以选择在窗口中直接写好(Dialog),如果选择外部输入表格数据,那么该模块会提供T端口供表格数据从外部输入。

(2)以一维查表为例,预查询表模块f1输入的取值范围为[0,1),k1输入需要是一个整数,该模块会以k1的值作为下标(第一个元素的下标为0)找到因变量列表中相应的元素,f1的值可以理解为“下标偏差”(非专业名词),因变量列表相邻元素的下标相差为1,f1=0代表需要求解的因变量正好为k1值索引到的因变量,f1>0时该模块会根据插值算法求解出因变量。

2、Prelookup预查找模块

(1)预查找模块可以设置查表算法等,它的表格数据(只需填写自变量列表即可)可以选择从外部输入(Input port),也可以选择在窗口中直接写好(Dialog),如果选择外部输入表格数据,那么该模块会提供bp端口供表格数据从外部输入。

(2)预查找模块的作用和使用插值预查询表模块相似(不过预查找模块只有一维),它的作用是根据输入的自变量求解k值和f值。

3、实际应用举例

(1)目标:系统的输入信号有两个,输出信号为两个输入值的乘积的算数平方根,不使用数学运算相关模块,给出下图所示的二维表以供查找。

(2)针对两个输入系统的自变量,分别使用Prelookup模块求出相应的k值和f值,Prelookup模块中的表格数据为自变量列表[1 3 5 7 9]。

(3)针对输出系统的因变量,根据Prelookup模块求出的k值和f值用Interpolation Using Prelookup模块进行查表,其中表格数据是一个二维矩阵,内容如上表所示。

(4)系统的输入信号值经过Prelookup模块可以分别得出在自变量列表[1 3 5 7 9]中对应的k值和f值,使用该值进行二维查表即可。

五、直接查询表及动态查询表模块

1、Direct Lookup Table(n-D)直接查询表模块

(1)直接查询表模块也可以设置维数,在配置窗口中的“Table Data”直接输入矩阵形式的表格数据,直接查询表模块会根据以输入信号作为下标直接在矩阵中进行元素索引,然后输出之。

(2)值得注意的是,该模块不只是可以输出单个元素(Element),还可以输出某一列数据(Column,表格数据至少是一维的)甚至是一个二维矩阵(2-D Matrix,表格数据至少是二维的),输出的维数越高,输入端口就越少(输入端口数等于表格数据维度减去输出数据维度),具体原因也显而易见,这里不再赘述。(下图示例中的t是一个三维矩阵)

2、Lookup Table Dynamic动态查询表模块

        该模块和直接查询表模块的功能类似,不过该模块支持在仿真过程中实时地修改表格数据,该模块的表格数据是通过输入端口x data和y data从外部输入的,x是自变量,y是因变量,如果输入x不在x data的自变量列表中,那么会使用插值算法求出因变量(这也意味着x data自变量列表需要单调递增)。

六、周期性质表查询模块

        该模块在模块库中有Sine和Cosine两种形式,其实它们经过配置后可实现相同的功能,二者的差别仅仅是默认的输出方程形式不同,下面以Sine模块为例进行介绍。

        该模块有一个信号输入端u,根据输入信号的值和输出方程(Output formula)可以计算出相应的输出值,输出方程的形式有正弦形式、余弦形式、复指数形式和正余弦结合形式四种,下面以正弦形式输出方程为例继续介绍。

        该模块的底层原理和普通的(一维)表查询模块类似,不过不同的是它因变量随自变量的变化具有周期性(这个变化具体如何由输出方程决定),可以利用四分之一波对称性的查表方法计算出输入信号对应的输出,这是(一维)表查询模块难以实现的。

        数据点的个数最好为2^{n}+1,这样在查表时效率会达到最高。当数据点过多时,应该相应地增加输出字长(小数部分长度等于输出字长减2)。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【C++多线程编程】 线程安全与对象生命周期管理
  • ffmpeg的安装和使用教程
  • [数据集][目标检测]人脸口罩佩戴目标检测数据集VOC+YOLO格式8068张3类别
  • 【C++ 宏定义 使用】
  • vue3写一个无限树形菜单,递归组件
  • 利用AI进行社交媒体创作及管理的14种简单方法
  • AOSP:在rom中打入一个脚本
  • ARM----时钟
  • 【全网最全】2024年数学建模国赛B题31页完整建模过程+25页成品论文+matlab/python代码等(后续会更新
  • 【数据库】MySQL表的Updata(更新)和Delete(删除)操作
  • 【Hot100】LeetCode—394. 字符串解码
  • Post-Training有多重要?一文带你了解全部细节
  • 【MySQL00】【 杂七杂八】
  • Python 错误 TypeError 解析,实际错误实例详解 (五)
  • 强调重点元素、弱化辅助元素、去掉无关元素,工控HMI还能好不了
  • 《Java编程思想》读书笔记-对象导论
  • 【Amaple教程】5. 插件
  • CAP理论的例子讲解
  • docker-consul
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • JavaScript 一些 DOM 的知识点
  • Laravel5.4 Queues队列学习
  • maya建模与骨骼动画快速实现人工鱼
  • MySQL主从复制读写分离及奇怪的问题
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • php中curl和soap方式请求服务超时问题
  • Python十分钟制作属于你自己的个性logo
  • React16时代,该用什么姿势写 React ?
  • Ruby 2.x 源代码分析:扩展 概述
  • 关于使用markdown的方法(引自CSDN教程)
  • 基于组件的设计工作流与界面抽象
  • 聊聊directory traversal attack
  • 新版博客前端前瞻
  • k8s使用glusterfs实现动态持久化存储
  • 函数计算新功能-----支持C#函数
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • # 数论-逆元
  • #android不同版本废弃api,新api。
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (19)夹钳(用于送货)
  • (ZT)薛涌:谈贫说富
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (回溯) LeetCode 40. 组合总和II
  • (简单) HDU 2612 Find a way,BFS。
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (五)MySQL的备份及恢复
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)jdk与jre的区别
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程