MATLAB ®, Simulink ® и генератор кода используют порядок основных столбцов для хранения массивов (1-D, 2-D,...). Доступ к следующему элементу массива в памяти осуществляется путем приращения первого индекса массива. Например, эти пары элементов последовательно сохраняются в памяти :A(i) и A(i+1), B(i,j) и B(i+1,j), C(i,j,k) и C(i+1,j,k). Дополнительные сведения о внутреннем представлении данных MATLAB см. в разделе Данные MATLAB.
Форматирование внутреннего хранилища данных Simulink и генератора кода отличается от форматирования внутреннего хранилища данных MATLAB только хранением массивов сложных чисел. В MATLAB реальная и мнимая части хранятся в отдельных массивах. В продуктах Simulink и генератора кода они хранятся в «перемежающемся» формате, где числа в памяти чередуются вещественными, мнимыми, вещественными, мнимыми и так далее. Это соглашение позволяет эффективно реализовывать небольшие сигналы на линиях Simulink и для блоков Mux и других «виртуальных» блоков манипулирования сигналами (то есть они не активно копируют свои входы, просто ссылки на них).
Скомпилированный файл модели, , представляет матрицы как строки в синтаксисе MATLAB без подразумеваемого формата хранения. Это позволяет скопировать строку из model.rtw.rtw и вставьте его в код MATLAB и получите его распознавание MATLAB.
TLC объявляет параметры матрицы блока Simulink скалярными или 1-D переменными массива
real_T scalar; real_T mat[ nRows * nCols ];
где real_T может быть произвольным типом данных, поддерживаемым Simulink, и соответствовать типу переменной, заданному в файле модели.
Например, матрица 3 на 3 в блоке Look-Up Table (2-D)
1 2 3 4 5 6 7 8 9
хранится в какmodel.rtw
Parameter {
Name "OutputValues"
Value Matrix(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_INLINED
ModelParameterIdx 3
}
}и приводит к этому определению в model.h
typedef struct Parameters_tag {
real_T s1_Look_Up_Table_2_D_Table[9];
/* Variable:s1_Look_Up_Table_2_D_Table
* External Mode Tunable:yes
* Referenced by block:
* <S1>/Look-Up Table (2-D
*/
[ ... other parameter definitions ... ]
} Parameters; файл объявляет фактическое хранилище для параметра матрицы, и видно, что формат является основным для столбца. То есть читать вниз по столбцам, затем по строкам.model.h

Parameters model_P = {
/* 3 x 3 matrix 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 },
[ ... other parameter declarations ...]
};TLC обращается к параметрам матрицы через LibBlockMatrixParameter и LibBlockMatrixParameterAddr, где
LibBlockMatrixParameter(OutputValues, "", "", 0, "", "", 1) прибыль " (автоматически оптимизирован из model_P.s1_Look_Up_Table_2_D_Table[nRows]""[0+) иnRows*1]"
LibBlockMatrixParameterAddr(OutputValues, "", "", 0, "", "", 1) прибыль "& как для встроенного, так и для неинлинированного блочного кода TLC.model_P.s1_Look_Up_Table_2_D_Table[nRows]"
Параметры матрицы аналогичны другим параметрам TLC. В структуру параметров помещаются только те параметры, к которым явно обращается функция библиотеки TLC во время генерации кода. Итак, следуя примеру, s1_Look_Up_Table_2_D_Table не объявляется, если LibBlockParameter или LibBlockParameterAddr явный доступ к нему.