1、1-D Lookup Table 模块
1-D Lookup Table 模块是最简单的查表模块
所谓查表,就是说目标为一个填满数据的表格或向量(1维)或矩阵(多维),根据对应维数的输人能够在表中定位一个对应的输出。家电和汽车电子相关的嵌入式算法设计常常使用查表方法来提高应用层算法的计算效率。比如在交流电机调速控制时需要计算正弦余弦值,如果在嵌入式芯片紧张的资源里使用泰勒级数计算正余弦值,执行效率肯定会让人大跌眼镜。但是,如果事先将正弦函数在一个周期的输入按照一定的采样间隔离散化,并将其对应的数值事先计算好,将二者共同构成一个一维查找表,存储在ROM中(生成代码时通常使用Simu-link.Parameters对象定义查找表的Breakpoints和 Table值),每次嵌入式计算中需要调用正弦函数时直接根据输入换算到一个周期内,然后再去查表计算,效率就会得到显著提升。这种优势在 Simulink仿真以及针对嵌入式的代码生成中均得到体现。
双击模块图标打开参数对话框,该模块有3个页面,分别是Table and Breakpoints 、Algorithm和 DataType。Table and Breakpoints用于设置查找表维数﹑每个维数的输入及查找表的定义,
Number of table dimensions:设置查找表维数,1-D Lookup Tables默认是一维查找表,可以通过下拉框选择1~4的维数,或者直接在下拉框中输入1~30的维数。输入后自动生成与维数相同的 Breakpoints编辑框。
Table data:查找表的数值。
Breakpoints 1:查找表第一维输入向量,必须按照从小到大严格单调递增,否则仿真时报错。Edit table and breakpoints:按下此按钮可以将查找表输入及内容在弹出的表格里编辑。可对单元格内容进行选择性编辑,通过最下面的转置对话框(Transpose display)可以选择向量的显示方式
Linear——线性插值法。
Cubic spline——三次样条插值方法。
Extrapolation method内插算法提供了3个选项:Clip、 Linear和 Cubic spline。Clip-—Clip插值,使用breakpoint端点值。
Cubic spline——三次样条插值方法。
Algorithm其余参数及Data Type页面的参数使用频率较低,读者使用时参考Help文档。查表模块默认给出一个11个采样点组成的正切函数查找表。笔者举例说明如何创建并使用长度为256的正弦查找表。因为正弦函数是周期函数,只取一个周期进行离散化处理即可,当模块输入超出0~2x时进行周期取余( mod运算),转换为0~2T 内的输人。使用MATLAB内建函数linspace将0~2n等间隔采样256个点,再调用sin函数求得这些采样点的正弦函数值。
双击1-D Lookup Table,分别填入下列:
建立仿真模型,通过Clock模块产生时间信号,与2t做mod运算,保证mod模块输出在0~2T之间,然后在输入到1-D Lookup Table中进行查表运算。仿真模型和结果图像如下:
1-D Lookup Table模块的Number of Table Dimensions修改为2即可得到了2-D Look-up Table模块,修改为其他正整数n则可以变为n-D Lookup Table模块,使用方法相同。