MATLAB®, Simulink® и генератор кода используют главное столбцом упорядоченное расположение для устройства хранения данных массивов (1D, 2D...). К следующему элементу массива в памяти получают доступ путем постепенного увеличения первого индекса массива. Например, эти пары элемента хранятся последовательно в памяти: A(i) и A(i+1), B(i,j) и B(i+1,j), C(i,j,k) и C(i+1,j,k). Для получения дополнительной информации о внутреннем представлении данных MATLAB смотрите Данные MATLAB (MATLAB).
Simulink и генератор кода внутреннее форматирование хранения данных отличаются от MATLAB внутреннее хранение данных, форматирующее только в устройстве хранения данных массивов комплексного числа. В MATLAB действительные и мнимые части хранятся в отдельных массивах. В Simulink и продуктах генератора кода они хранятся в "чередованном" формате, где числа в альтернативе памяти, действительной, мнимой, действительной, мнимой, и т.д. Это соглашение позволяет эффективные внедрения маленьких сигналов на строках Simulink и для блоков Мультиплексора и других "виртуальных" блоков манипуляции сигнала (то есть, они активно не копируют свои входные параметры, просто ссылки на них).
Скомпилированный образцовый файл, , представляет матрицы как строки в синтаксисе MATLAB без подразумеваемого формата устройства хранения данных. Это так, можно скопировать строку из файла model.rtw.rtw и вставить ее в код MATLAB и иметь распознанный MATLAB.
TLC объявляет параметры матрицы блока Simulink как скалярные или 1D переменные типа массив
real_T scalar; real_T mat[ nRows * nCols ];
где real_T может быть произвольным типом данных, поддержанным Simulink, и совпадать с типом переменной, данным в образцовом файле.
Например, 3х3 матрица в блоке Look-Up Table (2D)
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 явным образом не получают доступ к нему.