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