代码生成的矩阵和数组
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函数通过使用模型配置参数默认的函数数组布局。 您还可以使用 |
代码生成器矩阵参数
编译后的模型文件,
,代表矩阵特征向量在MATLAB的语法,没有隐含的存储格式。这种格式使您能够复制的特征向量模型
.rtw.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