MATLAB®存储矩阵列优先格式数据和阵列(1-d,2-d,...)作为载体。金宝appSimulink的®和代码发生器可以存储在列优先或行优先格式阵列数据。对于存储在列优先布局的阵列,各列的元素是在存储器中连续。以行优先布局,行中的元素是连续的。阵列布局也被称为顺序,格式,和表示。在存储元素的顺序可以是集成性,可用性和性能非常重要。某些算法存储在一个特定的顺序数据更好执行。
编程语言和环境承担所有数据的单一阵列布局。默认情况下MATLAB和Fortran使用列为主的布局,而C和C ++使用行主要的布局。同金宝appSimulink的编码器™,您可以生成C / C ++代码,使用行主要布局或列为主布局。
在一维数组的术语计算机存储器存储数据。例如,当声明一个3×3矩阵,该软件存储该基质为具有九个元素的一维数组。默认情况下,MATLAB存储与列为主阵列布局这些元素。每列的元素在存储器中连续。
考虑矩阵一个
:
A = 1 2 3 4 5 6 7 8 9
一个
转换为长度为9的顺序的数组:A(1)= A(1,1)= 1;A(2)= A(2,1)= 4;A(3)= A(3,1)= 7;A(4)= A(1,2)= 2;A(5)= A(2,2)= 5;
在列优先格式中,存储器阵列的下一个元素通过递增阵列的第一索引访问。例如,这些元件对被顺序地存储在存储器中:
A(ⅰ)
和A(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)。
代码生成软件使用默认的几个原因列优先格式:
信号和阵列处理的世界主要是在列为主阵列布局:MATLAB,LAPACK FORTRAN90和DSP库。
列相当于基于帧的处理的信道。在这种情况下,列主要存储更加高效。
A柱,主要阵列是自洽的,其分量的子阵:
甲列优先2- d阵列是1- d阵列的简单级联。
甲列优先3- d阵列是2- d阵列的简单级联。
步幅是存储器位置来索引到在同一维度中的下一个元素的数量。第一维度的步幅是一个元素。的第n维元件的步幅是较低维度的尺寸的乘积。
行主正d阵列有自己的最高维度的1步幅。子矩阵的操作典型地访问存储器中的散射数据集,它不允许有效的索引。
C使用行主格式。MATLAB和Simu金宝applink默认使用的是主列格式。您可以配置代码生成软件,以生成具有行-主数组布局的代码。如果要将外部C代码与生成的代码集成,请参阅此表中列出的注意事项。
行动 | 考虑 |
---|---|
该模型用于代码生成的配置阵列布局。 | 在配置参数对话框,集模型配置参数阵列布局至列优先 要么行主 。 |
启用仿真和代码生成高效的行主要算法。 | 选择型号配置参数使用算法行主要阵列布局优化(金宝appSIMULINK)。 |
在行主阵列布局与所生成的代码集成外部的C代码的功能。 | 创建通过使用集成了生成的代码外部代码功能S-功能:
使用C来电块调用外部C函数到Simulink。金宝app通过使用模型配置参数指定的自定义的C函数阵列布局缺省功能阵列布局(金宝appSIMULINK)。 您还可以使用 |
编译模型文件,
代表矩阵作为在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]] *通过引用: '<根> /恒压' * / {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]] *通过引用: '<根> /恒压' * / {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0}};
金宝appSimulink和码发生器的内部数据存储从MATLAB内部数据存储仅在复数阵列的存储格式格式化不同。在MATLAB中,实部和虚部被存储在单独的阵列。在Si金宝appmulink和代码生成器,这些部件被存储在交错的格式。在存储器替代实数,虚,实数,虚等的数字。这个约定允许小信号的有效实现Simulink的线,对于金宝app复用器块和其他虚拟信号操纵块。例如,信号不积极复制他们的投入,仅仅是引用。
代码生成器不支持行主要阵列布局这些块生成代码。金宝app
衍生物
积分
集成有限公司
积分,二阶
积分,二阶有限公司
PID控制器
PID控制器(2DOF)
状态空间
转移FCN
传输延迟
可变时间延迟
可变传输延迟
零极
解释功能的MATLAB
Level-2的MATLAB S-功能
MATLAB系统
从电子表格
行主代码生成不支持可变大小的信号。金宝app