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