coder.columnMajor

Задайте упорядоченное по столбцам размещение массивов для функции или класса

Синтаксис

Описание

пример

coder.columnMajor задает упорядоченное по столбцам размещение массивов для данных, используемых текущей функцией в сгенерированном коде. Когда помещено в конструктора класса, coder.columnMajor задает упорядоченное по столбцам размещение для данных, используемых классом.

Примечание

По умолчанию генерация кода использует упорядоченное по столбцам размещение массивов.

Примеры

свернуть все

Задайте упорядоченное по столбцам размещение массивов для функции путем вставки coder.columnMajor в тело функции.

Предположим тот myFunction функция верхнего уровня вашего кода. Ваше приложение требует, чтобы вы выполнили матричное сложение с упорядоченным по столбцам размещением массивов и умножение матриц с упорядоченным по строкам размещением.

function S = myFunction(A,B)
%#codegen
% check to make sure inputs are valid
if size(A,1) ~= size(B,1) || size(A,2) ~= size(B,2)
    disp('Matrices must be same size.')
    return;
end
% make both matrices symmetric
B = B*B';
A = A*A';
% add matrices
S = addMatrix(A,B);
end

Запишите функцию для матричного сложения под названием addMatrix. Задайте упорядоченный по столбцам для addMatrix при помощи coder.columnMajor.

function S = addMatrix(A,B) 
%#codegen
S = zeros(size(A));
coder.columnMajor; % specify column-major array layout
S = A + B;
end

Сгенерируйте код для myFunction. Используйте codegen команда.

codegen myFunction -args {ones(10,20),ones(10,20)} -config:lib -launchreport -rowmajor

Из-за codegen -rowmajor опция, умножение матриц в myFunction использует упорядоченное по строкам размещение. Однако сгенерированный код для addMatrix использует упорядоченное по столбцам размещение массивов из-за coder.columnMajor вызвать.

Советы

  • Генератор кода использует упорядоченное по столбцам размещение массивов по умолчанию.

  • Спецификация размещения массивов в функции заменяет размещение массивов, заданное с codegen команда. Например, если функциональный foo содержит coder.columnMajor, и вы генерируете код при помощи:

    codegen foo -rowmajor

    затем сгенерированный код все еще использует упорядоченное по столбцам размещение.

  • Другие функции, вызванные из упорядоченной по столбцам функции, наследовали упорядоченную по столбцам спецификацию. Однако, если одна из вызванных функций имеет свое собственное отличное coder.rowMajor вызовите, генератор кода изменяет размещение массивов соответственно. Если упорядоченная по строкам функция и упорядоченный по столбцам вызов функции та же функция, которая не имеет ее собственной спецификации размещения массивов, генератора кода, производят упорядоченную по строкам версию и упорядоченную по столбцам версию функции.

  • coder.columnMajor проигнорирован за пределами генерации кода и симуляции.

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