主要内容

用TLC处理数据

矩阵参数

MATLAB®,仿金宝app真软件®,代码生成器对数组存储使用列-主顺序(1-D, 2-D,…)。通过对数组的第一个索引进行递增来访问内存中数组的下一个元素。例如,这些元素对按顺序存储在内存中:(我)(i + 1)B (i, j)B (i + 1, j)C (i, j, k)C (i + 1 j k).有关MATLAB数据的内部表示的更多信息,请参见MATLAB数据

代码生成器矩阵参数

金宝appSimulink和Code Generator内部数据存储格式不同于MATLAB内部数据存储格式的不同仅在复杂数字阵列的存储中。在MATLAB中,实部和虚部存储在单独的数组中。在Simuli金宝appnk和Code Generator产品中,它们存储在“交下载188bet金宝搏错”格式中,其中内存中的数字备用真实,虚构,真实,虚构等。本公约允许在Simulink线上的小信号有效实现小信号金宝appMux块和其他“虚拟”信号操作块(也就是说,它们不主动复制它们的输入,只是复制对它们的引用)。

编译后的模型文件,模型.rtw,在MATLAB语法中将矩阵表示为字符串,没有隐含的存储格式。这样你就可以把字符串从.rtw文件,粘贴到MATLAB代码,并由MATLAB识别。

TLC声明Simulink金宝app块矩阵参数为标量或一维数组变量

real_T标量;real_T mat[nRows * nCols];

在哪里real_T可以是Simulink支持的任意数据类型,并匹配模型文件中给金宝app定的变量类型。金宝app

例如,查找表(2-D)块中的3 × 3矩阵

1 2 3 4 5 6 7 8 9

存储在模型.rtw作为

参数{名称"OutputValues"值矩阵(3,3)[[1.0,2.0,3.0];(4.0, 5.0, 6.0);[7.0, 8.0, 9.0];] String "t" StringType "Variable" ASTNode {IsNonTerminal 0 Op sl_not_inline ModelParameterIdx 3}}

就得到了in这个定义模型.h

typedef struct Parameters_tag {real_T s1_Look_Up_Table_2_D_Table[9];/*变量:s1_look_up_table_d_table *外部模式可调:yes *引用块:* /查找表(2-D */[…]其他参数定义…]}参数;

模型.h文件声明了matrix参数的实际存储空间,可以看到格式是column-major。也就是说,先读列,再读行。

参数模型_P = {/ * 3 x 3矩阵s1_Look_Up_Table_2_D_Table * /{1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0},[…其他参数声明...]};

TLC通过libblockmatrixparameter.LibBlockMatrixParameterAddr,在那里

LibBlockMatrixParameter(OutputValues, "", "", 0, "", "", 1)返回模型_P.s1_Look_Up_Table_2_D_Table [nRows)”(自动优化“[0 +nRows* 1)”),

LibBlockMatrixParameterAddr(OutputValues, "", "", 0, "", "", 1)返回“&模型_P.s1_Look_Up_Table_2_D_Table [nRows)”用于内联和非内联块TLC代码。

矩阵参数与其他TLC参数类似。只有那些TLC库函数在代码生成期间显式访问的参数才被放置在参数结构中。那么,根据这个例子,s1_Look_Up_Table_2_D_Table没有申报,除非LibBlockParameterLibBlockParameterAddr显式地访问它。

相关话题