本文来自知乎 Erick-Chiang, 欢迎关注作者。
一 引言
说了这么多,其实标定完之后,其实最后都是Excel表格数据,这些数据一方面可以写到下位机,还可以导入到Simulink大模型中去做仿真计算,比如根据扭矩、转速去查控制器效率,进而得到直流功率等等之类的,那么如何将Excel表格数据导入到Simulink中呢,这里要用到“n-D Lookup Table”模块。
二 “2-D Lookup Table”模块的使用方法
假设有一张这样的2维表格,具体内容如下:
Simulink中的n-D Lookup Table 如下所示:
依据MAB ((MAB具体指:Simulink®MathWorks® Advisory Board Control Algorithm Modeling Guidelines V5.0))ub_0012:查表系统模块的使用指导规则,将模块双击设置为如下查表方式:
a) 内插法:使用线性点-斜率; b) 外插法:使用“裁剪”; c) 外插法可选项:选中“输入等于或高于最后一个断点时使用最后一个表值”
用法示例:在simulink中右键“属性”,创建数据字典,并引用。
创建数据字典并引用。
因为我们是2D表,类似已知X 、Y,查询Z,在数据字典中创建三个变量(Simulink.Parameter),如下图所示。
三个变量(Simulink.Parameter)取名字如下图所示。
双击2D lookup table 模块,点击BreakPoints 1(“Trq”)的箭头处“三个点”,点击“Trq(Data.sldd)”,然后点击“Open”,可以对数据进行编辑。注意:BreakPoints必须是单调递增!!!
点击“Open Variable Editor”对数据进行编辑.
将图1表格的数据,复制进去即可,如下图所示。
重复上述步骤,将其它数据也复制进去。最后点击“Edit table and breakpoints...”可以查看完整的表格数据,如下图所示。
查看完整的表格数据,可以与图1比较,是一样的,即成功利用2-D LookUp Table 模块将Excel数据导入到了simulink中。
三 结语
通过本文的详细探讨,了解了Simulink中2-D LookupTable模块的强大功能与应用场景。学习了如何创建和配置2-D LookupTable模块,还掌握了如何通过导入外部数据文件、调整插值方法和边界处理选项来优化模型性能。
在实际应用中,正确配置和使用2-D LookupTable模块能够显著提升模型的准确性和仿真效率,特别是在处理复杂非线性关系时。然而,探索和学习之路永无止境。因此,鼓励大家继续深入学习Simulink的其他模块和特性,不断拓宽自己的知识边界,以应对更加复杂多变的工程挑战。
汽车研发交流群,有兴趣的朋友请添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车从业人员。
1. 1-D Lookup Table
1.1 内插法
线性内插: 当输入值位于定义域内的两个点之间时,使用线性内插方法计算输出值。 设置步骤:
双击 1-D Lookup Table 模块。 在弹出的对话框中,选择 Interpolation-Extrapolation 选项卡。 在 Lookup Method 下拉菜单中选择 Interpolation-Extrapolation。 选择 Interpolation method 为 Linear。
当输入值位于定义域内的两个点之间时,选择最近的定义域点的值作为输出值。 设置步骤:
双击 1-D Lookup Table 模块。 在弹出的对话框中,选择 Interpolation-Extrapolation 选项卡。 在 Lookup Method 下拉菜单中选择 Interpolation-Extrapolation。 选择 Interpolation method 为 Nearest。
1.2 外插法
线性外插: 当输入值超出定义域时,使用线性外插方法计算输出值。 设置步骤:
双击 1-D Lookup Table 模块。 在弹出的对话框中,选择 Interpolation-Extrapolation 选项卡。 在 Lookup Method 下拉菜单中选择 Interpolation-Extrapolation。 选择 Extrapolation method 为 Linear。
当输入值超出定义域时,使用定义域的边界值作为输出值。 设置步骤:
双击 1-D Lookup Table 模块。 在弹出的对话框中,选择 Interpolation-Extrapolation 选项卡。 在 Lookup Method 下拉菜单中选择 Interpolation-Extrapolation。 选择 Extrapolation method 为 Clip。
2. 2-D Lookup Table
2.1 内插法
线性内插: 当输入值位于定义域内的两个点之间时,使用线性内插方法计算输出值。 设置步骤:
双击 2-D Lookup Table 模块。 在弹出的对话框中,选择 Table and Breakpoints 选项卡。 在 Interpolation method 下拉菜单中选择 Linear。
当输入值位于定义域内的两个点之间时,选择最近的定义域点的值作为输出值。 设置步骤:
双击 2-D Lookup Table 模块。 在弹出的对话框中,选择 Table and Breakpoints 选项卡。 在 Interpolation method 下拉菜单中选择 Nearest。
2.2 外插法
线性外插: 当输入值超出定义域时,使用线性外插方法计算输出值。 设置步骤:
双击 2-D Lookup Table 模块。 在弹出的对话框中,选择 Table and Breakpoints 选项卡。 在 Extrapolation method 下拉菜单中选择 Linear。
当输入值超出定义域时,使用定义域的边界值作为输出值。 设置步骤:
双击 2-D Lookup Table 模块。 在弹出的对话框中,选择 Table and Breakpoints 选项卡。 在 Extrapolation method 下拉菜单中选择 Clip。
3. 高维 Lookup Table (n-D Lookup Table)
3.1 内插法
线性内插: 当输入值位于定义域内的多个点之间时,使用线性内插方法计算输出值。 设置步骤:
双击 n-D Lookup Table 模块。 在弹出的对话框中,选择 Table and Breakpoints 选项卡。 在 Interpolation method 下拉菜单中选择 Linear。
当输入值位于定义域内的多个点之间时,选择最近的定义域点的值作为输出值。 设置步骤:
双击 n-D Lookup Table 模块。 在弹出的对话框中,选择 Table and Breakpoints 选项卡。 在 Interpolation method 下拉菜单中选择 Nearest。
3.2 外插法
线性外插: 当输入值超出定义域时,使用线性外插方法计算输出值。 设置步骤:
双击 n-D Lookup Table 模块。 在弹出的对话框中,选择 Table and Breakpoints 选项卡。 在 Extrapolation method 下拉菜单中选择 Linear。
当输入值超出定义域时,使用定义域的边界值作为输出值。 设置步骤:
双击 n-D Lookup Table 模块。 在弹出的对话框中,选择 Table and Breakpoints 选项卡。 在 Extrapolation method 下拉菜单中选择 Clip。
4. 实例
假设有一个 2-D Lookup Table,定义域 x 为 [0, 1, 2, 3],定义域 y 为 [0, 1, 2, 3],值域 z 为一个 4x4 的矩阵。
4.1 设置 2-D Lookup Table
打开 Simulink 并添加 2-D Lookup Table 模块。
双击模块,进入设置对话框。
在 Table and Breakpoints 选项卡中:
设置 Breakpoints 1 为 [0, 1, 2, 3]。
设置 Breakpoints 2 为 [0, 1, 2, 3]。
设置 Table 为一个 4x4 的矩阵,例如:
[0, 1, 2, 3;
1, 2, 3, 4;
2, 3, 4, 5;
3, 4, 5, 6]
在 Interpolation-Extrapolation 选项卡中:
选择 Interpolation method 为 Linear。
选择 Extrapolation method 为 Clip。
通过以上步骤,您可以设置 2-D Lookup Table 模块,使其在输入值超出定义域时使用裁剪方法,并在定义域内使用线性内插方法。这有助于提高模型的准确性和仿真效率。