coder.isRowMajor

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

Описание

пример

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