coder.isRowMajor

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

Синтаксис

coder.isRowMajor
coder.isRowMajor(arg)

Описание

пример

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

пример

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

Примеры

свернуть все

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

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 обеспечивает эффективный доступ к памяти для любого выбора размещения массивов.

Рассмотрите функциональный foo:

function foo
coder.rowMajor;
x = magic(3);
if coder.isRowMajor(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 foo

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

foo_mex

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

свернуть все

Переменная, чтобы запросить для размещения массивов.

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

Ограничения

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

Советы

  • За пределами генерации кода coder.isRowMajor является всегда ложным.

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

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

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