exponenta event banner

Макеты строк и столбцов - основные массивы

Элементы массива могут храниться в макете «основной столбец» или «главная строка». Для массива, хранящегося в макете «основной столбец», элементы столбцов являются смежными в памяти. В макете основной строки элементы строк являются смежными. Макет массива также называется порядком, форматом и представлением. Порядок хранения элементов может иметь важное значение для интеграции, удобства использования и производительности. Определенные алгоритмы лучше работают с данными, хранящимися в определенном порядке.

Языки программирования и среды обычно предполагают единую структуру массива для всех данных. 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. (Для комплексных чисел при преобразовании макета массива используется непереключенная транспозиция.)

См. также

| | |

Связанные темы