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 Data.
Форматирование внутреннего хранилища данных 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 в блоке Интерполяционная таблица (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;The файл объявляет фактическое хранилище для матричного параметра, и можно увидеть, что формат является основным столбцом. То есть считывайте столбцы вниз, затем поперек строк.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[<reservedrangesplaceholder0 >]""[0 ) и+ nRows*1]"
LibBlockMatrixParameterAddr(OutputValues, "", "",
0, "", "", 1) возвращает "& для inlined и nonlined блочного TLC кода.model_P.s1_Look_Up_Table_2_D_Table[<reservedrangesplaceholder0 >]"
Матричные параметры аналогичны другим параметрам TLC. В структуру параметров помещаются только те параметры, к которым явно обращается функция библиотеки TLC во время генерации кода. Итак, следуя примеру, s1_Look_Up_Table_2_D_Table не объявляется, если только LibBlockParameter или LibBlockParameterAddr явный доступ к нему.