Matlab/Simulink中查表函数的应用

本文介绍了Simulink中的1-DLookupTable模块在嵌入式算法设计中的应用,通过查表方法提高计算效率。以正弦函数为例,详细阐述了如何创建和使用正弦查找表,包括设置查找表的维度、输入和算法。通过线性插值和三次样条插值方法实现数据间的插值,并展示了查表运算的仿真模型和结果。此外,还提到了如何扩展到2-D和n-DLookupTable模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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模块,使用方法相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

warries

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

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

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

打赏作者

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

抵扣说明:

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

余额充值