MATLAB® хранит матричные данные и массивы (1D, 2D...) в главном столбцом формате как вектор. Simulink® и генератор кода могут сохранить данные массива в главном столбцом или главном строкой формате. Для массива, сохраненного в главном столбцом размещении, элементы столбцов непрерывны в памяти. В главном строкой размещении элементы строк непрерывны. Размещение массивов также упоминается как порядок, формат и представление. Порядок, в котором хранятся элементы, может быть важен для интегрирования, удобства пользования и производительности. Определенные алгоритмы выполняют лучше на данных, хранимых в особом порядке.
Языки программирования и среды обычно принимают размещение единого массива для всех данных. MATLAB и Фортран используют главное столбцом размещение по умолчанию, тогда как C и C++ используют главное строкой размещение. С Simulink Coder™ можно сгенерировать код C/C++, который использует главное строкой размещение или главное столбцом размещение.
Память компьютера хранит данные с точки зрения одномерных массивов. Например, когда вы объявляете 3х3 матрицу, программное обеспечение хранит эту матрицу как одномерный массив с девятью элементами. По умолчанию MATLAB хранит эти элементы размещением главного массива столбца. Элементы каждого столбца непрерывны в памяти.
Рассмотрите матричный A
:
A = 1 2 3 4 5 6 7 8 9
A
переводит в массив длины 9 в этом порядке: A(1) = A(1,1) = 1; A(2) = A(2,1) = 4; A(3) = A(3,1) = 7; A(4) = A(1,2) = 2; A(5) = A(2,2) = 5;
В главном столбцом формате к следующему элементу массива в памяти получают доступ путем постепенного увеличения первого индекса массива. Например, эти пары элемента хранятся последовательно в памяти:
A(i)
и A(i+1)
B(i,j)
и B(i+1,j)
C(i,j,k)
и C(i+1,j,k)
Матричный A
представлен в памяти по умолчанию с этим расположением:
1 4 7 2 5 8 3 6 9
В размещении главного массива строки язык программирования хранит элементы строки непрерывно в памяти. В главном строкой размещении элементы массива хранятся как:
1 2 3 4 5 6 7 8 9
Можно сохранить N-мерные массивы в главном столбцом или главном строкой размещении. В главном столбцом размещении элементы от первой (крайней левой) размерности или индекса непрерывны в памяти. В главном строкой размещении элементы от последней (самой правой) размерности или индекса непрерывны.
Для получения дополнительной информации о внутреннем представлении данных MATLAB смотрите Данные MATLAB (MATLAB).
Программное обеспечение генерации кода использует главный столбцом формат по умолчанию по нескольким причинам:
Мир обработки сигналов и обработки матриц находится в основном в размещении главного массива столбца: MATLAB, LAPack, Fortran90 и библиотеки DSP.
Столбец эквивалентен каналу в основанной на кадре обработке. В этом случае главное столбцом устройство хранения данных более эффективно.
Главный массив столбца последователен со своими подматрицами компонента:
Главный столбцом 2D массив является простой конкатенацией 1D массивов.
Главный столбцом трехмерный массив является простой конкатенацией 2D массивов.
Шаг является количеством ячеек памяти, чтобы индексировать к следующему элементу в той же размерности. Шаг первой размерности является одним элементом. Шаг энного элемента измерения является продуктом размеров более низких размерностей.
Главные строкой n-D массивы имеют свой шаг 1 для самой высокой размерности. Манипуляции с субматрицами обычно получают доступ к набору данных, имеющий разброс в памяти, которая не допускает эффективную индексацию.
C использует главный строкой формат. MATLAB и Simulink используют главный столбцом формат по умолчанию. Можно сконфигурировать программное обеспечение генерации кода, чтобы сгенерировать код с размещением главного массива строки. Если вы интегрируете внешний код С со сгенерированным кодом, смотрите факторы, перечисленные в этой таблице.
Действие | Рассмотреть |
---|---|
Сконфигурируйте размещение массивов модели для генерации кода. | В диалоговом окне Configuration Parameters задайте параметр Array layout как Column-major или Row-major . |
Включите эффективные главные строкой алгоритмы для симуляции и генерации кода. | В диалоговом окне Configuration Parameters включите Use algorithms optimized for row-major array layout (Simulink) параметр. |
Интегрируйте внешние функции кода С в размещении главного массива строки со сгенерированным кодом. | Создайте S-функции, которые интегрируют внешние функции кода со сгенерированным кодом при помощи:
Используйте блок C Caller, чтобы вызвать внешние функции C в Simulink. Задайте размещение массивов пользовательских функций C при помощи параметра конфигурации Default function array layout (Simulink). |
Скомпилированный образцовый файл,
, представляет матрицы как векторы символов в синтаксисе MATLAB без подразумеваемого формата устройства хранения данных. Этот формат позволяет вам скопировать вектор символов из файла model.rtw
.rtw
, вставить его в файл MATLAB и сделать, чтобы MATLAB распознал его.
Например, 3х3 матрица в блоке Constant
1 2 3 4 5 6 7 8 9
model.rtw
какParameter { Identifier "Constant_Value" LogicalSrc P0 Protected no Value [1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0] CGTypeIdx 18 ContainerCGTypeIdx 19 ReferencedBy Matrix(1,4) [[0, -1, 0, 0];] GraphicalRef Matrix(1,2) [[0, 1];] BHMPrmIdx 0 GraphicalSource [0, 1] OwnerSysIdx [0, -1] VarGroupIdx [1, 0] WasAccessedAsVariable 1 }
Файл
объявляет настоящее хранение для параметра матрицы. Вы видите, что формат находится в главном столбцом размещении.model_data.c
Parameters model_P = {
/* Expression: [ [1,2,3] ; [4,5,6] ;[7,8,9]]
* Referenced by: '<Root>/Constant '
*/
{ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 }
};
Главное строкой размещение
Например, 3х3 матрица в блоке Constant
1 2 3
4 5 6
7 8 9
хранится в model.rtw
какParameter {
Identifier "Constant_Value"
LogicalSrc P0
Protected no
Value [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]
CGTypeIdx 18
ContainerCGTypeIdx 19
ReferencedBy Matrix(1,4)
[[0, -1, 0, 0];]
GraphicalRef Matrix(1,2)
[[0, 1];]
BHMPrmIdx 0
GraphicalSource [0, 1]
OwnerSysIdx [0, -1]
VarGroupIdx [1, 0]
WasAccessedAsVariable 1
}
Файл model_data.h
объявляет настоящее хранение для параметра матрицы. Вы видите, что формат находится в главном строкой размещении.

Parameters model_P = {
/* Expression: [ [1,2,3] ; [4,5,6] ;[7,8,9]]
* Referenced by: '<Root>/Constant '
*/
{ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 }
};
Внутреннее хранение данных для массивов комплексного числа
Simulink и генератор кода внутреннее форматирование хранения данных отличаются от MATLAB внутреннее хранение данных, форматирующее только в устройстве хранения данных массивов комплексного числа. В MATLAB действительные и мнимые части хранятся в отдельных массивах. В Simulink и генераторе кода, части хранятся в чередованном формате. Числа в альтернативе памяти, действительной, мнимой, действительной, мнимой, и т.д. Это соглашение позволяет эффективные внедрения маленьких сигналов на строках Simulink для блоков Мультиплексора и других виртуальных блоков манипуляции сигнала. Например, сигналы активно не копируют свои входные параметры, только ссылки.
Неподдерживаемые блоки для главной строкой генерации кода
Генератор кода не поддерживает эти блоки для генерации кода в размещении главного массива строки.
Непрерывный
Производная
Интегратор
Integrator Limited
Интегратор, второго порядка
Интегратор, второго порядка ограниченный
ПИД-регулятор
ПИД-регулятор (2DOF)
Пространство состояний
Передайте Fcn
Транспортная задержка
Переменная задержка
Переменная транспортная задержка
Нулевой полюсный
Пользовательские функции
Интерпретированная функция MATLAB
Уровень 2 S-функция MATLAB
Функция MATLAB
Matlab.system
Источники
Из электронной таблицы
Похожие темы
- Данные MATLAB (MATLAB)
- Отображение типов MATLAB к типам в сгенерированном коде (MATLAB Coder)
- Размещения главного строкой и главного массива столбца (MATLAB Coder)
- Сохранение размерности многомерных массивов (Embedded Coder)