coder.isColumnMajor

Определите, использует ли текущая функция или переменная размещение основного столбца

Описание

пример

coder.isColumnMajor разрешается как true в сгенерированном коде, если текущая функция использует размещение массива с основным столбцом. Используйте функцию как выражение в потоке управления (if, else, switch) операторы.

пример

coder.isColumnMajor(arg) разрешается как true, если текущая переменная использует размещение массива с основным столбцом.

Примеры

свернуть все

Чтобы запросить размещение массива функции во время компиляции, используйте coder.isColumnMajor или coder.isRowMajor. Этот запрос может быть полезен для специализации вашего сгенерированного кода, когда он включает функции основной строки и основной столбца. Для примера рассмотрим эту функцию:

function S = addMatrixRouted(A,B)
 if coder.isRowMajor
     %execute this code if row major
     S = addMatrix_OptimizedForRowMajor(A,B); 
 elseif coder.isColumnMajor
     %execute this code if column major
     S = addMatrix_OptimizedForColumnMajor(A,B);
 end

Функция addMatrixRouted ведет себя по-разному в зависимости от того, использует ли он размещение основной строки или размещение основной столбца. Размещение, который использует функция, например, может зависеть от того, вызывается ли она из функции, которая содержит coder.rowMajor или coder.columnMajor. Когда addMatrixRouted использует размещение основной строки, он вызывает addMatrix_OptimizedForRowMajor функция, которая имеет эффективный доступ к памяти для основных данных строк. Когда функция использует размещение основного столбца, она вызывает версию addMatrix функция оптимизирована для данных основного столбца.

При помощи функций запроса сгенерированный код для addMatrixRouted обеспечивает эффективный доступ к памяти для любого выбора размещения массива.

Рассмотрим функцию bar:

function bar
coder.columnMajor;
x = magic(3);
if coder.isColumnMajor(x)
    fprintf('This will always be displayed in generated code.\n');
else
    fprintf('This will never be displayed in generated code.\n');
end
end

Сгенерируйте код:

codegen bar

Чтобы запустить MEX-функцию, введите:

bar_mex

Входные параметры

свернуть все

Переменная для запроса размещения массива.

Пример: coder.isColumnMajor(x);

Ограничения

  • Вы не можете запросить размещение массива для поля или свойства структуры.

Совет

  • Генератор кода по умолчанию использует размещение основного столбца.

  • Вне генерации кода и симуляции, coder.isColumnMajor всегда верно.

  • Если coder.isColumnMajor всегда разрешает true для вашего кода, других ветвей в if оператор игнорируется генератором кода. В противном случае для каждого размещения массива создается один образец текущей функции.

Введенный в R2018a