文件

插值与子表选择算法行主阵列布局

该实施例说明用于内插子表的算法,从一个更高的维度表中的内插块进行选择。与子表的选择内插算法为行主阵列布局优化。作为参考,参见与被用于列主要阵列布局优化的子表选择内插算法。通过使用行主内插算法进行的最佳速度和行主阵列布局上表中的数据进行操作时的内存使用情况生成的代码。通过使用列优先算法生成的代码执行最好列主阵列布局。

在这个例子中,你:

  • 插值与列为主和行的主要算法选定的子表。

  • 通过表置换保留块语义。

  • 生成与行的主要算法和阵列布局代码。

通过使用行的主要算法模拟

1。打开示例模型rtwdemo_col_interpselsubtablertwdemo_row_interpselsubtable

open_system('rtwdemo_col_interpselsubtable');open_system(“rtwdemo_row_interpselsubtable”);

2。默认情况下,Simuli金宝appnk的配置与列为主算法和列为主阵列布局的模型。该模型rtwdemo_col_interpselsubtable被配置为使用列主算法。运行模型和观察存储在工作区中可变输出YOUT

3。要启用行主算法,请打开“配置参数”对话框。在数学和数据类型窗格中,选择配置参数使用算法行主要阵列布局优化或金宝app者,在MATLAB命令窗口中,输入:

set_param('rtwdemo_col_interpselsubtable''UseRowMajorAlgorithm''在');

4.模拟模型并观察误差。

该列重大而行的主要算法子表的选择和插值秩序方面不同。子表选择原始表内进行。没有额外的内存分配给子表。所选择的子表是在存储器中连续。插值顺序是缓存友好与列主阵列布局和行主要算法具有行主要阵列布局列优先算法。此图比较与子表选择行优先和列优先插值。

由于语义上的变化,列主和行主插值将在不同的子表或数据集上执行。这个插值将导致不同的数值输出或错误。

保留通过表置换语义

使用子表选择,当从列主算法切换到行主算法时,模型语义会发生变化。为了保持语义或确保为插值选择了相同的子表,需要对表数据进行置换。否则,如果在预查找和插金宝app值块之间遇到不一致的断点和表数据,Simulink可能会报告错误。

1。rtwdemo_col_interpselsubtable /插值函数正如3-d表数据给出T3D =重塑([1:24],3,2,4)并用输入一个选择端口2(基于0的索引)。选定的子表T3D(:,:,3)对于列优先算法(在MATLAB-1开始的索引)。为了保持在同一个型号为行主算法的语义,即,选择具有相同的索引和选择端口输入相同的子表,置换表作为T3d_p = permute(T3d, [3,1,2])。选定的子表T3d_p (3::)(基于1的索引)的行主算法。

T3d_str = get_param ('rtwdemo_col_interpselsubtable /插补''桌子');set_param('rtwdemo_col_interpselsubtable /插补''桌子'......[“排列(”T3d_str,'[3,1,2])']);

2。当从文件导入表数据时,必须在导入文件之前对文件中的表数据进行置换。这种排列使表在整个模拟和代码生成工作流中都是可调的。

使用行主算法和数组布局生成代码

置换后的表格数据,模型rtwdemo_col_interpselsubtable配置为行主要模拟。该模型相当于预配置模型rtwdemo_row_interpselsubtable它使用了行主算法。

1。要为行主代码生成建立模型,请打开Configuration Parameters对话框。除了选择使用算法行主要阵列布局优化配置参数,对代码生成>接口窗格中,设置配置参数阵列布局行主选择。此配置参数使模型能够生成行主代码。或者,在MATLAB命令窗口中,输入:

set_param('rtwdemo_col_interpselsubtable'“ArrayLayout”“行”);

2。在对话框中,检查排列好的3-D表数据和选定的2-D子表。

3。更改MATLAB®当前文件夹可写文件夹。在C代码选项卡,单击构建生成的C代码。在生成的代码,观察2-d的内插算法为行主数据进行了优化。

close_system ('rtwdemo_col_interpselsubtable', 0);

相关的话题