exponenta event banner

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