主要内容

代码生成的矩阵和数组

MATLAB®存储矩阵数据和数组(一维,二维,…)列为主的格式作为一个向量。金宝app动态仿真模块®和代码生成器可以存储阵列数据列为主或行格式。对存储在数组列为主的布局,列的元素在内存中是连续的。行布局,元素的行是连续的。阵列布局也称为命令,格式,和代表性。元素的顺序存储的集成可能是重要的,可用性和性能。某些算法执行更好的数据存储在一个特定的顺序。

编程语言和环境为所有数据承担单一阵列布局。MATLAB和Fortran默认使用列为主的布局,而C和c++使用行布局。与金宝app仿真软件编码器™,您可以生成C / c++代码,使用行布局或列为主的布局。

数组存储在计算机内存

计算机内存存储数据的一维数组。举个例子,当你声明一个3×3的矩阵,这个矩阵软件商店与九个一维数组元素。默认情况下,MATLAB商店这些元素与一系列列为主的布局。每一列的元素在内存中是连续的。

考虑到矩阵一个:

一个= 1 2 3 4 5 6 7 8 9
一个转换成一个数组的长度9顺序:
(1)= (1,1)= 1;(2)= (2,1)= 4;(3)= (3,1)= 7;(4)= (1、2)= 2;(5)= (2,2)= 5;
等等。

在列为主的格式,下一个元素的数组在内存中是由递增数组的第一个索引访问。例如,这些元素对内存中的存储顺序:

  • (我)(i + 1)

  • B (i, j)B (i + 1, j)

  • C (i, j, k)C (i + 1 j k)

矩阵一个在内存中表示默认了这样的安排:

1 4 7 2 5 8 3 6 9

在存储阵列布局,编程语言将连续行元素存储在内存中。行布局,数组的元素被存储为:

1 2 3 4 5 6 7 8 9

你可以将n维数组存储在列为主或行布局。在列为主的布局,从第一个元素(最左边的)维度或指标是连续的在内存中。行存储布局,从最后一个元素(右边的)维度或指标是连续的。

更多信息在MATLAB数据的内部表示,看到的MATLAB数据

代码生成软件默认使用列为主的格式有几个原因:

  • 世界的信号和数组处理很大程度上是在列为主的阵列布局:MATLAB, LAPack Fortran90, DSP库。

  • 一列相当于一个通道在框架处理。在这种情况下,列为主的存储效率。

  • 列为主的数组是自洽的组件子矩阵:

    • 列为主的二维数组是一个简单的串联的一维数组。

    • 列为主的三维数组是一个简单的串联的二维数组。

    • 跨越的内存位置指数在同一维度下一个元素。第一个维度是一个元素的步伐。n维元素的步幅较低维度的尺寸的产品。

    • 行一天数组有其步1为最高的维度。子矩阵操作通常在内存中访问一个分散的数据集,而不允许高效的索引。

C使用行格式。MATLAB和Simu金宝applink默认使用列为主的格式。您可以配置代码生成软件与存储阵列布局来生成代码。如果你是整合外部C代码生成的代码,看到这个表中列出的注意事项。

行动 考虑
配置阵列布局模型的代码生成。 在配置参数对话框中,设置模型配置参数阵列布局列为主
使有效行算法仿真和代码生成。 选择模型配置参数使用算法优化存储阵列布局
集成外部C代码与生成的代码行阵列布局功能。

创建集成S-functions外部代码与生成的代码通过使用功能:

使用C调用块调用外部C函数模型。金宝app指定阵列布局定制的C函数通过使用模型配置参数默认的函数数组布局

您还可以使用coder.ceval在一个MATLAB函数块。看到在MATLAB功能块行数据的界面

代码生成器矩阵参数

编译后的模型文件,模型.rtw,代表矩阵特征向量在MATLAB的语法,没有隐含的存储格式。这种格式使您能够复制的特征向量.rtw文件,粘贴到一个MATLAB文件,MATLAB识别。

列为主的布局

例如,3×3的矩阵常数

1 2 3 4 5 6 7 8 9
存储在模型.rtw作为
参数{标识符“Constant_Value LogicalSrc P0保护没有价值(1.0,4.0,7.0,2.0,5.0,8.0,3.0,6.0,9.0]CGTypeIdx 18 ContainerCGTypeIdx 19 ReferencedBy矩阵(1、4)[[0 1 0,0];]GraphicalRef矩阵(1、2)[[0,1];]BHMPrmIdx 0 GraphicalSource [0, 1] OwnerSysIdx [0, 1] VarGroupIdx (1,0) WasAccessedAsVariable 1}

模型_data.c文件声明的实际存储矩阵参数。您可以看到,在列为主的布局格式。

参数模型_P ={/ *表达式:[[1,2,3];(4、5、6);[7 8 9]]*引用:“< Root > /常数”* / {1.0,4.0,7.0,2.0,5.0,8.0,3.0,6.0,9.0}};

行布局

例如,3×3的矩阵常数

1 2 3 4 5 6 7 8 9
存储在模型.rtw作为
参数{标识符“Constant_Value LogicalSrc P0保护没有价值(1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0]CGTypeIdx 18 ContainerCGTypeIdx 19 ReferencedBy矩阵(1、4)[[0 1 0,0];]GraphicalRef矩阵(1、2)[[0,1];]BHMPrmIdx 0 GraphicalSource [0, 1] OwnerSysIdx [0, 1] VarGroupIdx (1,0) WasAccessedAsVariable 1}

模型_data.h文件声明的实际存储矩阵参数。你可以看到格式行布局。

参数模型_P ={/ *表达式:[[1,2,3];(4、5、6);[7 8 9]]*引用:“< Root > /常数”* / {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0}};

复数的内部数据存储阵列

金宝app仿真软件和代码生成器内部数据存储格式不同于MATLAB内部数据存储只在复数数组的存储格式。在MATLAB中,实部和虚部都存储在单独的数组。在仿真金宝app软件和代码生成器,零件是存储在一个交替存储格式。数据在内存中替代真实的,虚构的,真实的,虚构的,等等。本公约允许高效实现的小信号模型,金宝appMux块,和其他虚拟信号处理模块。例如,信号不积极复制他们的输入,只是引用。

不支金宝app持的块行代码生成

代码生成器不支持这些块代码生成的行存储阵列布局。金宝app

连续

  • 导数

  • 积分器

  • 积分器有限

  • 积分器,二阶

  • 积分器,二阶有限

  • PID控制器

  • PID控制器(2自由度)

  • 状态方程

  • 转移Fcn

  • 运输延迟

  • 变量的时间延迟

  • 变量传输延迟

  • Zero-Pole

用户定义函数

  • 解释MATLAB函数

  • 2级MATLAB函数

来源

  • 从电子表格

信号的属性

  • 集成电路

限制行代码生成

  • 适应信号不支持行代码生成。金宝app

相关的话题