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)。

  • 22
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值