coder.isRowMajor

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

Введенный в R2018a
Для просмотра документации необходимо авторизоваться на сайте