coder.columnMajor

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

Синтаксис

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

Была ли эта тема полезной?