coder.isColumnMajor

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

Описание

пример

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

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Генерация кода графического процессора
Сгенерируйте код CUDA® для NVIDIA® графические процессоры с помощью GPU Coder™.

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