simulink查表模块1-D Lookup Table

发布时间:2024年01月23日

查表模块

查表是指在已填满数据的表格、一维向量或多维矩阵中,根据对应维数的输入定位相应输出。在家电和汽车电子领域的嵌入式算法设计中,查表方法有助于提高应用层算法的计算效率。例如,在交流电机调速控制中需计算正弦余弦值,若在资源有限的嵌入式芯片中采用泰勒级数计算,效率显然较低。
然而,事先将正弦函数在一个周期内离散化,并将其对应的数值计算好,共同构建一维查找表存储于ROM中(生成代码时通常使用Simulink.Parameters对象定义查找表的Breakpoints和Table值)。每次嵌入式计算中需要调用正弦函数时,根据输入换算到一个周期内,再查表计算,效率得以显著提升。这一优势在Simulink仿真及针对嵌入式的代码生成中均得以体现。

1-D Lookup Table 模块

模块具备一个输入端口和一个输出端口,在仿真过程中,根据输入信号的取值进行查表操作,并将对应的表格值输出。该模块依据内部预设的查找表进行图像绘制,这在模块框图中得以体现。默认图标如图所示。
在这里插入图片描述
双击模块图标以打开参数设置对话框。该模块包含三个页面,分别为表和断点(Table and Breakpoints)、算法(Algorithm)和数据类型(Data Type)。
在这里插入图片描述
表和断点页用于设定查找表的维数、各个维数的输入以及查找表的定义。

表维数(Number of table dimensions):设置查找表维数,1-DLookup Tables默认是一维查找表,可以通过下拉框选择1~4的维数,或者直接在下拉框中输入1~30的维数。输入后自动生成与维数相同的Breakpoints编辑框。

数据设定:可选表和断点、查找表对象;选择表和断点参数将在模块中进行表数据和断点的设置,选择查找表对象则需要输入查找表 (Simulink.LookupTable) 对象的名称。如果 Simulink.LookupTable 对象不存在,点击 在这里插入图片描述操作按钮并选择 Create。新查找表对象的对应参数会自动用模块信息填充。

表数据:查找表的数值,根据各维度断点确认输入在哪个断点,输出对应的表数据。

断点 1:查找表第一维输入向量,必须按照从小到大严格单调递增,否则仿真时报错。这里设置了从0-100共101个断点。

编辑表和断点:按下此按钮可以将查找表输入及内容在弹出的表格里编辑。可对单元格内容进行选择性编辑,通过最下面的转置显示(Transpose display)可以选择向量的显示方式,如图所示。在这里插入图片描述
算法设置
查找表毕竟是由有限个离散点的值构成的,而输入可以是无穷无尽的,很多时候输入的值并非正好落在查找表中提供的点上,这时就需要用到插值算法:当输入没有落在查找表的断点上但在其范围内时使用内插算法;当输入在断点所表示的范围外时则使用外插算法。内插外插算法都可以在Algorithm页面的参数组里设定,如图所示。
在这里插入图片描述
模块支持均一(常量)、线性(线性点-斜率)、拉格朗日(线性拉格朗日)、最近、三次样条和 Akima 样条插值方法。
Algorithm其余参数及Data Type页面的参数使用频率较低,读者使用时参考Help文档。
这里举例创建了一个长度为101的查找表

linspace(0,100,101)
ceil(linspace(0,100,101)/10)

表数据为0-101内的自然数除以10并向上取整。即输入在0时输出0,1-10时输出1,11-20输出2,以此类推。
在这里插入图片描述

n-D Lookup Table模块

1-D Lookup Table模块的Number of Table Dimensions修改为2即可得到了2-D Look-up Table模块,修改为其他正整数n则可以变为n-D Lookup Table模块,使用方法相同,不再赘述。

文章来源:https://blog.csdn.net/weixin_40531919/article/details/135764662
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。