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 и для блоков Mux и других "виртуальных" блоков манипуляции сигнала (то есть, они активно не копируют свои входные параметры, просто ссылки на них).
Скомпилированный файл модели, , представляет матрицы как строки в синтаксисе 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
}
}и результаты в этом определении в modelH
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; файл объявляет настоящее хранение для параметра матрицы, и вы видите, что формат упорядочен по столбцам. Таким образом, считайте вниз столбцы, затем через строки.modelH

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 явным образом получите доступ к нему.