Элементы массива могут храниться в макете «основной столбец» или «главная строка». Для массива, хранящегося в макете «основной столбец», элементы столбцов являются смежными в памяти. В макете основной строки элементы строк являются смежными. Макет массива также называется порядком, форматом и представлением. Порядок хранения элементов может иметь важное значение для интеграции, удобства использования и производительности. Определенные алгоритмы лучше работают с данными, хранящимися в определенном порядке.
Языки программирования и среды обычно предполагают единую структуру массива для всех данных. MATLAB ® и Fortran по умолчанию используют компоновку «основной столбец», в то время как C и C++ используют компоновку «основная строка». С помощью Coder™ MATLAB можно создать код C/C + +, использующий макет основной строки или макет основной строки. См. раздел Создание кода, использующего макет главного массива строк.
Компьютерная память хранит данные в виде одномерных массивов. Например, при объявлении матрицы 3 на 3 программа сохраняет эту матрицу как одномерный массив с девятью элементами. По умолчанию MATLAB сохраняет эти элементы с макетом основного массива столбца. Элементы каждого столбца являются смежными в памяти.
Рассмотрим матрицу A:
A =
1 2 3
4 5 6
7 8 9Матрица A представлен в памяти по умолчанию с такой компоновкой:
1 4 7 2 5 8 3 6 9
В макете основного массива строк язык программирования хранит элементы строк непрерывно в памяти. В макете основной строки элементы массива хранятся как:
1 2 3 4 5 6 7 8 9
N-мерные массивы также могут храниться в макете «основной столбец» или «главная строка». В макете «основной столбец» элементы из первого (крайнего слева) измерения или индекса являются смежными в памяти. В основной строке элементы последнего (крайнего правого) измерения или индекса являются смежными.
При смешивании основных данных строк и основных данных столбцов в одном и том же коде необходимо преобразование макета массива. Например, можно создать код, включающий специализации «строка-основная» и «столбец-основная функция». Специализации функций используют один тип компоновки массива для всех входных, выходных и внутренних данных. При передаче данных между функциями генератор кода автоматически вставляет преобразования компоновки массива по мере необходимости. При необходимости также преобразуются входные и выходные данные в сгенерированные функции MEX.
Для двумерных данных операции транспонирования преобразуют данные между макетом основной строки и макетом основной строки. Рассмотрим транспонированную версию A:
A' =
1 4 7
2 5 8
3 6 9Компоновка «основной столбец» A' соответствует главной строке макета A. (Для комплексных чисел при преобразовании макета массива используется непереключенная транспозиция.)
coder.columnMajor | coder.isColumnMajor | coder.isRowMajor | coder.rowMajor