主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

在生成的代码中保留总线元素的维度

默认情况下,生成的代码包含多维模型数据的一维数组。在配置参数对话框中,如果将数组布局参数设置为 Row-major,则可以在生成的代码中保留多维数组的维度。请参阅Preserve Dimensions of Multidimensional Arrays in Generated Code

在生成的代码中,您可以通过在 Embedded Coder® 字典和代码映射编辑器中配置存储类来保留根级输入端口和输出端口、参数、信号、状态、查找表和数据存储的维度。为存储类配置的保留数组维度属性适用于模型中的数据元素。您不能使用存储类属性来保留总线元素的维度,因为总线对象是全局类型,通常在多个数据元素(例如状态、信号等)之间共享。

要保留包含多维总线元素的总线对象的维度,请使用类型编辑器中的保留元素维度属性。您只能为 ERT 模型保留总线对象的维度。

打开示例模型

1.打开模型 PreserveBusDims

PreserveBusDims;

2.打开 Embedded Coder

3.在配置参数对话框中,验证参数数组布局是否设置为 Row-major

配置总线元素

该模型在基础工作区中包含以下 Simulink.Bus 对象:

  • ImperialSpecs

  • MetricSpecs

1.在 Simulink® 工具条的建模选项卡上,在设计库中,选择类型编辑器

2.在 Type Editor 中,将 View 设置为 All。然后,在 ImperialSpecs 行和 PreserveElementDimensions 列中选中复选框。当您选择此属性时,您可以配置总线对象以保留总线对象内所有元素的维度。

或者,在 MATLAB 命令提示符下输入:

ImperialSpecs.PreserveElementDimensions = 1;

生成和审查代码

为模型生成代码。在 C 代码选项卡上,点击构建

evalc('slbuild(''PreserveBusDims'')');

生成的代码保留了多维元素的维度。在 ImperialSpecs 总线对象中,名为 DimensionsInInches 的元素是 [10 3] 的多维数组,而名为 WeightInPounds 的元素是 [10] 的向量。保留元素维度属性适用于多维数组。

file = fullfile('PreserveBusDims_ert_rtw',...
    'PreserveBusDims.h');
coder.example.extractLines(file,'#define DEFINED_TYPEDEF_FOR_ImperialSpecs_', ...
    '} ImperialSpecs;',0,1);
typedef struct {
  real_T DimensionsInInches[10][3];
  real_T WeightInPounds[10];
} ImperialSpecs;

限制

  • 代码生成器始终为 N 维向量生成一维数组,即使您指定 N 维索引。

另请参阅

主题