Элементы массива могут храниться в главном столбцом размещении или главном строкой размещении. Для массива, сохраненного в главном столбцом размещении, элементы столбцов непрерывны в памяти. В главном строкой размещении элементы строк непрерывны. Размещение массивов также называется порядком, форматом и представлением. Порядок, в котором хранятся элементы, может быть важен для интегрирования, удобства пользования и производительности. Определенные алгоритмы выполняют лучше на данных, хранимых в особом порядке.
Языки программирования и среды обычно принимают размещение единого массива для всех данных. MATLAB® и Фортран используют главное столбцом размещение по умолчанию, тогда как C и C++ используют главное строкой размещение. С MATLAB Coder™ можно сгенерировать код 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