Основные строки и основные столбцы Размещений

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

Языки и окружения программирования обычно предполагают одно размещение массива для всех данных. MATLAB® и по умолчанию Фортран использует размещение основной столбца, в то время как C и C++ используют размещение основной строки. С помощью MATLAB Coder™ можно сгенерировать код C/C + +, который использует размещение основной строки или размещение основной столбца. См. «Генерация кода, который использует размещение массива Row-Major».

Устройство хранения массивов в памяти компьютера

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

См. также

| | |

Похожие темы