18.Simulink查表模块
18.1 概述
LookUpTable,查表模块。比较常用的模块,参数较多,会复杂一点,比较重要的模块,一定掌握。
18.2 n-DLookUpTable N维查表模块
18.2.1 查表原理
通过有限的数据去得出相关的结果。比如我们知道x1,x2,x3对应的y1,y2,y3值,通过这三组数据,可以线性地插值出其范围的其他数据。
18.2.2.1 维度设置
可以选择设置为1,2,3,4d查表。
18.2.2.2 Table和Breakpoint
最重要的输出和坐标轴对应的值。注意两个值一定是一一对应的关系,有多少个Table值,就要有多少个Breakpoint的值。
PS:BreakPoint数据一定是递增或者递减的,建议使用递增的。
18.2.3 查表算法
18.2.3.1 内插算法
插值算法 | 描述 | 图形 |
Flat | 不插值,零阶保持 | |
Nearest | 最接近的值,取更接近的横轴的数据 | |
Liner point slope | 基于两点之间的斜率线性插值 | |
Liner Lagranfge | 线性拉格朗日插值方式 | |
Cubic Spline | 三次样条插值。比较费资源,仿真用效果非常好。但是生成代码消耗资源太多。 |
Flat
Flap蓝色,Nearest红色。
18.2.3.2 外插算法
插值算法 | 描述 |
Clip | 截断,右边范围外按照Table最后一个值作为结果,左边范围外按照Table第一个值作为结果。 |
Linear | 线性插值,右边范围外的按照最后两个值的斜率来计算,左边范围外的按照前两个值的斜率来计算。 |
Cubic Spline | 三次样条插值。仅针对内插算法是三次样条插值。 |
18.2.3.3 Index查找算法
默认是Binary Search,二分查找,推荐使用此方法。查找效率比较高。
18.2.4 数据类型
Fraction分数或者小数部分的数据类型,推荐使用继承内部规则。分数就是我们要查的值的横坐标的值减去前面一个点的横坐标,占相邻两个点横坐标差的比。
Fraction = (x-x2)/(x3-x2).
推荐使用下面的数据类型设置。
18.3 2-DLookUpTable 2维查表模块
有两个Breakpoint,一个Table。
18.4 动态查表模块
实时设置Breakpoint和Table的值,使用起来比较灵活,但是要注意数据的正确性。
对比查表模块的输出结果。动态查表的精度无法接受。