coder.isColumnMajor

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

Синтаксис

coder.isColumnMajor
coder.isColumnMajor(arg)

Описание

пример

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

пример

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

Примеры

свернуть все

Чтобы запросить размещение массивов функции во время компиляции, используйте 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 всегда решает к истине для вашего кода, другие ответвления в операторе if проигнорированы генератором кода. В противном случае один экземпляр текущей функции создается для каждого размещения массивов.

Представленный в R2018a

Была ли эта тема полезной?