codegen

Сгенерируйте код C/C + + из кода MATLAB

Описание

пример

codegen options function -args {func_inputs} генерирует код C or C++ из MATLAB® функция с входами типа func_inputs и создает сгенерированный код. Используйте options аргумент для задания настроек, таких как объект строения генерации кода. Объект строения управляет типом сборки (MEX, lib, dll или exe) и параметрами генерации кода. Для получения информации о создании и использовании объекта строения смотрите Настройте параметры сборки, coder.config, и страницы с описанием объекта строения: coder.CodeConfig, coder.MexCodeConfig, и coder.EmbeddedCodeConfig.

Если функция не имеет входов, опускайте специфичные для функции -args {func_inputs} опция.

codegen options files function -args {func_inputs} генерирует код C/C + + из функции MATLAB, которая использует пользовательский исходный код, заданный во внешних files. Для получения дополнительной информации см. Call C/C + + Code from КОД MATLAB и Configure Build for External C/C + + код.

codegen options files function -args {func_inputs} -nargout number_args генерирует код C/C + + и управляет количеством выходных аргументов для кода функции C/C + +, сгенерированного из функции MATLAB. Файлы и опции аргументов являются необязательными. Используйте -nargout Опция, когда не все выходы функции MATLAB необходимы. Для получения дополнительной информации смотрите Указание количества Входного параметра функции точки входа или Выходных аргументов для генерации.

codegen options files function1 -args {func1_inputs} ... functionN -args {funcN_inputs} генерирует код C/C + + из нескольких функций MATLAB. Напишите входные параметры отдельно для каждой функции, следующей за именем функции. Можно также использовать -nargout опция для каждой функции. Функции, из которых вы генерируете код, называются функциями точки входа. Для получения дополнительной информации смотрите Сгенерировать код для нескольких функций точки входа.

пример

codegen options files function -args {func_inputs1} ... -args {func_inputsN} генерирует мультисигнатурную MEX-функцию из функции MATLAB. Обеспечьте несколько -args спецификации для входных параметров той же функции точки входа. Используйте options аргумент для задания таких настроек, как объект строения генерации кода и параметры. Необходимо задать тип сборки как MEX-функцию. Другие типы сборки (lib, dll, и exe) не поддерживаются. Для получения дополнительной информации смотрите Сгенерировать одну MEX-функцию для нескольких сигнатур.

codegen project генерирует код из файла проекта MATLAB Coder™, например test.prj.

Примеры

свернуть все

Написание функции MATLAB mcadd это возвращает сумму двух значений.

function y = mcadd(u,v) %#codegen
% The directive %#codegen indicates that the function
% is intended for code generation
y = u + v;
end

В командной строке MATLAB запустите этот codegen команда.

codegen mcadd -args {[0 0 0 0],0}

Генератор кода создает файл MEX mcadd_mex в текущей рабочей папке.

  • Если вы не задаете цель сборки, генерация кода по умолчанию переходит к генерации кода MEX. По умолчанию генератор кода называет сгенерированную MEX-функцию mcadd_mex.

  • Чтобы разрешить генерацию кода MEX или C/C + + с определенными типами, необходимо задать свойства (класс, размер и сложность) всех входных переменных функциям точки входа MATLAB. В этом примере вы используете -args опция для предоставления примерных значений для входов. Генератор кода использует эти значения примера, чтобы определить, что первый вход является 1-by- 4 массив вещественных double значения и второй вход является действительным скаляром double.

    Фактические значения этих входных входов примера не релевантны для генерации кода. Любая другая пара значений с теми же свойствами (класс, размер и сложность) приводит к тому же сгенерированному коду. См. «Задание свойств входных параметров функции точки входа».

В командной строке вызовите сгенерированную MEX-функцию mcadd_mex. Убедитесь, что класс, размер и сложность значений, которым вы передаете mcadd_mex соответствуют входным свойствам, заданным в codegen команда.

mcadd_mex([1 1 1 1],5)
ans =

     6     6     6     6

Выполнение функции MATLAB mcadd с этими входными значениями формирует тот же выход. Этот тест проверяет, что mcadd и mcadd_mex имеют то же поведение.

Написание функции MATLAB myAdd это возвращает сумму двух значений.

function y = myAdd(u,v) %#codegen
y = u + v;
end

В командной строке MATLAB запустите эту codegen команда.

codegen -config:mex myAdd.m -args {1,2} -args {int8(2),int8(3)} -args {1:10,1:10} -report
Генератор кода создает одну MEX-функцию myAdd_mex для нескольких сигнатур, заданных в codegen команда. Для получения дополнительной информации смотрите Сгенерировать одну MEX-функцию для нескольких сигнатур.

Написание функции MATLAB, mcadd, это возвращает сумму двух значений.

function y = mcadd(u,v) %#codegen
y = u + v;

Сгенерируйте файлы библиотеки C в пользовательской папке mcaddlib использование -config:lib опция. Задайте первый входной тип как вектор 1 на 4 беззнаковых 16-битных целых чисел. Задайте второй вход как скаляр двойной точности.

codegen -d mcaddlib -config:lib  mcadd -args {zeros(1,4,'uint16'),0}

Написание функции MATLAB, coderRand, который генерирует случайное скалярное значение из стандартного равномерного распределения на открытом интервале (0,1).

function r = coderRand() %#codegen
r = rand();

Написание основной функции C, c:\myfiles\main.c, который вызывает coderRand.

/*
** main.c
*/
#include <stdio.h>
#include <stdlib.h>
#include "coderRand.h"
#include "coderRand_initialize.h"
#include "coderRand_terminate.h"
int main()
{
    coderRand_initialize();
    printf("coderRand=%g\n", coderRand());
    coderRand_terminate();
    
    puts("Press enter to quit:");
    getchar();

    return 0;
}

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

cfg = coder.config('exe')
cfg.CustomSource = 'main.c'
cfg.CustomInclude = 'c:\myfiles'
codegen -config cfg coderRand

codegen генерирует исполняемый файл C, coderRand.exe, в текущей папке и вспомогательных файлах в папке по умолчанию, codegen\exe\coderRand.

В этом примере показано, как задать основную функцию как параметр в объекте строения coder.CodeConfig. Кроме того, можно задать файл, содержащий main() отдельно в командной строке. Можно использовать исходный файл, объект или файл библиотеки.

Более подробный пример см. в разделе Использование примера C Main в приложении.

Напишите функцию MATLAB, которая принимает один вход.

function y = halfValue(vector) %codegen
    y = 0.5 * vector;
end

Использовать coder.typeof для определения типа входа как вектор-строка двойников с максимальным размером 1 на 16 с вторым измерением размером переменной.

vectorType = coder.typeof(1, [1 16], [false true]);

Сгенерируйте статическую библиотеку на C.

codegen -config:lib halfValue -args {vectorType}

Написание функции MATLAB, use_globals, который принимает один входной параметр u и использует две глобальные переменные AR и B.

function y = use_globals(u)
%#codegen
% Turn off inlining to make 
% generated code easier to read
coder.inline('never');
global AR;
global B;
AR(1) = u(1) + B(1);
y = AR * 2;

Сгенерируйте MEX-функцию. По умолчанию, codegen генерирует MEX-функцию с именем use_globals_mex в текущей папке. Задайте свойства глобальных переменных в командной строке при помощи -globals опция. Задайте этот вход u является действительным, скалярным, двойным, при помощи -args опция.

codegen -globals {'AR', ones(4), 'B', [1 2 3 4]} use_globals -args {0}

Также можно инициализировать глобальные данные в рабочем пространстве MATLAB. В подсказке MATLAB введите:

global AR B;
AR = ones(4);
B = [1 2 3];

Сгенерируйте MEX-функцию.

codegen use_globals -args {0}

Написание функции, displayState, который использует перечисленные данные для активации светодиодного отображения, основанного на состоянии устройства. Он освещает зелёное светодиодное отображение, чтобы указать на состояние ON. Он освещает красное светодиодное отображение для индикации состояния OFF.

function led = displayState(state)
%#codegen

if state == sysMode.ON
    led = LEDcolor.GREEN;
else
    led = LEDcolor.RED;
end

Задайте LEDColor перечисления. По пути MATLAB создайте файл с именем 'LEDColor', содержащий:

classdef LEDcolor < int32
    enumeration
        GREEN(1),
        RED(2),
    end
end

Создайте coder.EnumType объект с использованием значения из существующего перечисления MATLAB.

Задайте sysMode перечисления. По пути MATLAB создайте файл с именем 'sysMode', содержащий:

classdef sysMode < int32
  enumeration
    OFF(0)
    ON(1)
  end
end

Создайте coder.EnumType объект из этого перечисления.

t = coder.typeof(sysMode.OFF);

Сгенерируйте MEX-функцию для displayState.

codegen  displayState -args {t}

Написание языковой функции MATLAB, mcsqrtfi, который вычисляет квадратный корень входа с фиксированной точкой.

function y = mcsqrtfi(x) %#codegen
y = sqrt(x);

Определить numerictype и fimath свойства для входного x с фиксированной точкой и сгенерируйте код библиотеки C для mcsqrtfi использование -config:lib опция.

T = numerictype('WordLength',32, ...
                'FractionLength',23, ...
                'Signed',true)
F = fimath('SumMode','SpecifyPrecision', ...
           'SumWordLength',32, ...
           'SumFractionLength',23, ...
           'ProductMode','SpecifyPrecision', ...
           'ProductWordLength',32, ...
           'ProductFractionLength',23)
% Define a fixed-point variable with these
%  numerictype and fimath properties
myfiprops = {fi(4.0,T,F)}
codegen -config:lib mcsqrtfi -args myfiprops
codegen генерирует библиотеку на C и вспомогательные файлы в папке по умолчанию, codegen/lib/mcsqrtfi.

Можно сгенерировать код для кода MATLAB, который принимает входы половинной точности. Для получения дополнительной информации см. half.

Написание функции MATLAB foo это возвращает сумму двух значений.

function y = foo(a,b)
y = a + b;
end

В командной строке MATLAB запустите этот codegen команда.

codegen -lang:c++ -config:lib foo -args {half(0),half(0)} -report
Code generation successful: View report

Генератор кода создает статическую библиотеку C++ в work\ codegen\lib\foo, где work - текущая рабочая папка.

Чтобы просмотреть отчет генерации кода, нажмите View report. В средстве просмотра отчетов проверьте сгенерированный исходный код C++ в файле foo.cpp.

real16_T foo(real16_T a, real16_T b)
{
  return a + b;
}

Сгенерированная функция foo принимает и возвращает значения половинной точности. Тип половинной точности C++ real16_T определяется в сгенерированном заголовочном файле rtwhalf.h. Смотрите определение + оператор класса real16_T.

Сгенерированный код в этом примере преобразует входы половинной точности в одинарную точность, выполняет операцию сложения с одинарной точностью и преобразует результат обратно в половинную точность.

Этот пример требует Fixed-Point Designer™.

Написание функции MATLAB, myadd, это возвращает сумму двух значений.

function y = myadd(u,v) %#codegen
    y = u + v;
end

Написание функции MATLAB, myadd_test, для тестирования myadd.

function y = myadd_test %#codegen
    y = myadd(10,20);
end

Создайте coder.FixptConfig объект, fixptcfg, с настройками по умолчанию.

fixptcfg = coder.config('fixpt');

Установите имя испытательного стенда.

fixptcfg.TestBenchName = 'myadd_test';

Создайте объект строения генерации кода, чтобы сгенерировать автономную статическую библиотеку C.

cfg = coder.config('lib');

Сгенерируйте код с помощью -float2fixed опция.

codegen -float2fixed fixptcfg -config cfg myadd

Задайте функцию MATLAB, myadd, это возвращает сумму двух значений.

function y = myadd(u,v) %#codegen
y = u + v;
end

Создайте coder.CodeConfig объект для генерации статической библиотеки. Задайте TargetLang на 'C++'.

cfg = coder.config('lib');
cfg.TargetLang = 'C++';

В командной строке MATLAB создайте и запустите codegen команда. Задайте myadd как функцию точки входа. Задайте входы, чтобы myadd быть матрицами переменного размера типа double размерности которых неограниченны. Задайте cfg как объект строения кода. Включите -toproject опция для преобразования codegen команда к эквивалентному файлу проекта MATLAB Coder с именем myadd_project.prj.

codegen -config cfg myadd -args {coder.typeof(1,[Inf,Inf]),coder.typeof(1,[Inf,Inf])} -toproject myadd_project.prj
Project file 'myadd_project.prj' was successfully created.
Open Project

Генератор кода создает файл проекта myadd_project.prj в текущей рабочей папке. Управление codegen с -toproject опция не генерирует код. Он создает только файл проекта.

Сгенерируйте код из myadd_project.prj при помощи другого codegen команда.

codegen myadd_project.prj

Генератор кода производит статическую функцию библиотеки C++ myadd в work\ codegen\lib\myadd папка, где work - ваша текущая рабочая директория.

Входные параметры

свернуть все

codegen команда предоставляет приоритет отдельным опциям командной строки над опциями, заданными объектом строения. Если опции командной строки конфликтуют, преобладает самая правая опция. Порядок опций и других синтаксических элементов взаимозаменяемый.

Задается как одно или несколько из следующих значений:

-c

Сгенерируйте код C/C + +, но не вызывайте make команда.

-config:dll

Сгенерируйте динамическую библиотеку C/C + + с помощью параметров конфигурации по умолчанию.

-config:exe

Сгенерируйте статический исполняемый файл C/C + + с использованием параметров конфигурации по умолчанию.

-config:lib

Сгенерируйте статическую библиотеку C/C + + с помощью параметров конфигурации по умолчанию.

-config:mex

Сгенерируйте MEX-функцию с помощью параметров конфигурации по умолчанию.

-config:single

Сгенерируйте код MATLAB с одной точностью с помощью параметров конфигурации по умолчанию.

Требуется Fixed-Point Designer.

-config config_object

Укажите объект строения, который содержит параметры генерации кода. config_object является одним из следующих объектов строения:

  • coder.CodeConfig - Параметры для автономной библиотеки C/C + + или генерации исполняемых файлов, если Embedded Coder® недоступен.

    % Configuration object for a dynamic linked library
    cfg = coder.config('dll')
    % Configuration object for an executable
    cfg = coder.config('exe')
    % Configuration object for a static standalone library
    cfg = coder.config('lib')
    

  • coder.EmbeddedCodeConfig- Параметры для автономной библиотеки C/C + + или генерации исполняемых файлов, если доступен Embedded Coder.

    % Configuration object for a dynamic linked library
    ec_cfg = coder.config('dll')
    % Configuration object for an executable
    ec_cfg = coder.config('exe')
    % Configuration object for a static standalone library
    ec_cfg = coder.config('lib')
    

  • coder.MexCodeConfig - Параметры для генерации кода MEX.

    mex_cfg = coder.config
    % or 
    mex_cfg = coder.config('mex')

Дополнительные сведения см. в разделе Настройка параметров сборки.

-d out_folder

Сохраните сгенерированные файлы в абсолютном или относительном пути, заданном out_folder. out_folder не должны содержать:

  • Пространства, так как пространства могут привести к отказам генерации кода в определенных строениях операционной системы.

  • Не 7-битные символы ASCII, такие как японские символы,

Если папка задана как out_folder не существует, codegen создает его.

Если вы не задаете расположение папки, codegen генерирует файлы в папке по умолчанию:

codegen/target/fcn_name. 

target могут быть:

  • mex для MEX-функций

  • exe для встраиваемых исполняемых файлов C/C + +

  • lib для встраиваемых библиотек C/C + +

  • dll для динамических библиотек C/C + +

fcn_name - имя первой функции MATLAB (по алфавиту) в командной строке.

Функция не поддерживает следующие символы в именах папок: звездочка (*), вопросительный знак (?), доллар ($) и фунт (#).

Примечание

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

- double2single <reservedrangesplaceholder0>

Генерирует код MATLAB с одной точностью, используя настройки, которые coder.SingleConfig double2single_cfg_name объекта задает. codegen генерирует файлы в папке codegen/ fcn_nameодинок.

fcn_name - имя функции точки входа.

При использовании с -config опция, также генерирует одноточный код C/C + +.codegen генерирует файлы с одной точностью в папке codegen/ target/ folder_name

. target могут быть:

  • mex для MEX-функций

  • exe для встраиваемых исполняемых файлов C/C + +

  • lib для встраиваемых библиотек C/C + +

  • dll для динамических библиотек C/C + +

folder_name является конкатенацией fcn_name и singlesuffix.

singlesuffix является суффиксом, которым coder.SingleConfig свойства OutputFileNameSuffix задает. Файлы с одной точностью в этой папке также имеют этот суффикс.

Для получения дополнительной информации смотрите Сгенерировать код MATLAB с одной точностью. Для использования этой опции необходимо иметь Fixed-Point Designer.

- float2fixed <reservedrangesplaceholder0>

При использовании с -config опция, генерирует код C/C + + с фиксированной точкой, используя настройки, которые объект строения преобразования из плавающей запятой в фиксированную запятую float2fixed_cfg_name задает.

codegen генерирует файлы в папке codegen/ target/ fcn_name_fixpt. target могут быть:

  • mex для MEX-функций

  • exe для встраиваемых исполняемых файлов C/C + +

  • lib для встраиваемых библиотек C/C + +

  • dll для динамических библиотек C/C + +

fcn_name - имя функции точки входа.

При использовании без -config опция, генерирует код MATLAB с фиксированной точкой с помощью настроек, названных объектом строения преобразования из плавающей запятой в фиксированную запятую float2fixed_cfg_name задает. codegen генерирует файлы в папке codegen/ fcn_name/ fixpt.

Вы должны задать TestBenchName свойство float2fixed_cfg_name. Для примера:

fixptcfg.TestBenchName = 'myadd_test';
Эта команда задает, что myadd_test - тестовый файл для объекта строения с плавающей точкой и фиксированной точкой fixptcfg.

Для получения дополнительной информации смотрите Преобразование кода MATLAB в код с фиксированной точкой. Для использования этой опции необходимо иметь Fixed-Point Designer.

-g

Укажите, использовать ли опцию debug для компилятора C. Если вы включите режим отладки, компилятор C отключает некоторые оптимизации. Компиляция происходит быстрее, но выполнение происходит медленнее.

-глобалы global_values

Задайте имена и начальные значения для глобальных переменных в файлах MATLAB.

global_values - массив ячеек с глобальными именами переменных и начальными значениями. Формат global_values является:

{g1, init1, g2, init2, ..., gn, initn}

gn - имя глобальной переменной, заданное в виде вектора символов. initn - начальное значение. Для примера:

-globals {'g', 5}

Кроме того, используйте этот формат:

-globals {global_var, {type, initial_value}}

type является объектом. Чтобы создать объект type, используйте coder.typeof. Для переменных глобального массива ячеек необходимо использовать этот формат.

Перед генерацией кода с codegen, инициализируйте глобальные переменные. Если вы не задаете начальные значения для глобальных переменных, используя -globals опция, codegen проверяет наличие переменной в глобальной рабочей области MATLAB. Если вы не задаете начальное значение, codegen генерирует ошибку.

MATLAB Coder и MATLAB имеют свои собственные копии глобальных данных. Для согласованности синхронизируйте их глобальные данные каждый раз, когда они взаимодействуют. Если вы не синхронизируете данные, их глобальные переменные могут отличаться.

Чтобы задать постоянное значение для глобальной переменной, используйте coder.Constant. Для примера:

-globals {'g', coder.Constant(v)}
задает, что g - глобальная переменная с постоянным значением v.

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

-I include_path

Добавить include_path в начало пути генерации кода. Когда codegen ищет функции MATLAB и пользовательские файлы C/C + +, сначала ищет путь генерации кода. Он не ищет классы в пути генерации кода. Классы должны находиться в пути поиска файлов MATLAB. Для получения дополнительной информации смотрите Пути и Setup файловой инфраструктуры.

Если путь содержит символы, которые не являются 7-битными ASCII, такими как японские символы, возможно, что codegen не находит файлы по этому пути.

Если ваш include_path содержит пути, которые содержат пространства, заключают каждый образец в двойные кавычки, например:

'C:\Project "C:\Custom Files"'
-jit

Используйте just-in-time (JIT) компиляцию для генерации MEX-функции. JIT-компиляция может ускорить генерацию MEX-функций. Эта опция применяется только к генерации MEX-функций. Эта опция не совместима с определенными функциями генерации кода или опциями, такими как пользовательский код или использование библиотеки OpenMP.

-lang:c

Укажите язык для использования в сгенерированном коде как C.

Если вы не задаете ни один целевой язык, генератор кода производит код С

-lang:c++

Укажите язык для использования в сгенерированном коде как C++.

-launchreport

Сгенерируйте и откройте отчет генерации кода. Если вы не задаете эту опцию, codegen генерирует отчет только в случае возникновения ошибки или предупреждающих сообщений или если вы задаете -report опция.

-o output_file_name

Сгенерируйте MEX-функцию, библиотеку C/C + + или исполняемый файл C/C + + с базовым именем output_file_name плюс внутренний номер:

  • .a или .lib для статических библиотек C/C + +

  • .exe или нет расширения для исполняемых файлов C/C + +

  • .dll для динамических библиотек C/C + + в Microsoft® Windows® системы

  • .so для динамических библиотек C/C + + на Linux® системы

  • .dylib для динамических библиотек C/C + + в системах Mac

  • Зависящее от платформы расширение для сгенерированных MEX-функций

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

Для MEX-функций, output_file_name должно быть допустимым именем функции MATLAB.

Если вы не задаете имя файла выхода для библиотек и исполняемых файлов, то базовое имя fcn_1. fcn_1 - имя первой функции MATLAB, заданное в командной строке. Для MEX-функций базовое имя fcn_1_mex. Можно запустить исходную функцию MATLAB и MEX-функцию и сравнить результаты.

-O optimization_option

Оптимизируйте сгенерированный код, основываясь на значении optimization_option:

  • enable:inline - Включите инкрустацию функции.

  • disable:inline - Отключить инкрустацию функции. Чтобы узнать больше о встраивании функции, смотрите Control Inlining to Fine-Tune Performance и Readibility of Сгенерированный Код.

  • enable:openmp - При наличии используйте библиотеку OpenMP. Используя библиотеку OpenMP, MEX функционирует или код C/C + +, которыйcodegen генерирует для parfor-циклы могут выполняться в нескольких потоках.

  • disable:openmp - Отключить библиотеку OpenMP. С отключенным OpenMP, codegen лечит parfor-циклы как for-циклически и генерирует MEX-функцию или код C/C + +, который запускается в одном потоке. См. «Управление компиляцией циклов parfor».

Задайте -O в командной строке один раз для каждой оптимизации.

Если не указано, codegen использует inlining и OpenMP для оптимизации.

-упаковать zip_file_name

Упакуйте сгенерированный автономный код и его зависимости в сжатое ZIP- файла с zip_file_name имен. Затем можно использовать ZIP-файл для перемещения, распаковки и перестройки файлов кода в другой среде разработки.

Эта функциональность упаковки также обеспечивается packNGo функция.

-preservearraydims

Сгенерируйте код, который использует N-мерную индексацию. Для получения дополнительной информации смотрите Сгенерировать код, который использует N-размерную индексацию.

-profile

Включите профилирование сгенерированных MEX-функций при помощи Профилировщика MATLAB. Для получения дополнительной информации смотрите MEX-функции профиля при помощи Профилировщика MATLAB.

-report

Составьте отчет генерации кода. Если вы не задаете эту опцию, codegen формирует отчет только в случае возникновения ошибки или предупреждающих сообщений или если вы задаете -launchreport опция.

Если у вас есть Embedded Coder, эта опция также позволяет создавать отчет Замена кода.

-reportinfo info

Экспортируйте информацию о генерации кода в переменную info в вашем базовом рабочем пространстве MATLAB. Смотрите Программный отчет о генерации кода Access.

-rowmajor

Сгенерируйте код, который использует размещение массива основной строки. Размещение основного столбца по умолчанию. Для получения дополнительной информации смотрите Сгенерировать код, который использует размещение массива Row-Major.

-silent

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

Отображаются предупреждения и сообщения об ошибке.

-singleC

Сгенерируйте одноточный код C/C + +. Для получения дополнительной информации смотрите Сгенерировать код С с одной точностью в командной строке.

Для использования этой опции необходимо иметь Fixed-Point Designer.

-std:c89/90

Используйте C89/90 (ANSI) стандартную математическую библиотеку для сгенерированного кода.

-std:c99

Используйте C99 (ISO) стандартную математическую библиотеку для сгенерированного кода.

-std:c++03

Используйте стандартную математическую библиотеку C++ 03 (ISO) для сгенерированного кода. Использовать эту библиотеку можно только при генерации кода С++.

-std:c++11

Используйте стандартную математическую библиотеку C++ 11 (ISO) для сгенерированного кода. Использовать эту библиотеку можно только при генерации кода С++.

-тест test_file

Выполняйте test_file, замена вызова исходной функции MATLAB вызовом MEX-функции. Использование этой опции аналогично выполнению coder.runTest.

Эта опция поддерживается только при генерации MEX-функций или при использовании объекта строения с VerificationMode установлено на 'SIL' или 'PIL'. Создание объекта строения, который имеет VerificationMode для параметра требуется продукт Embedded Coder.

Эта опция не поддерживается преобразованием с фиксированной точкой или преобразованием с одной точностью.

-toproject project_file_name

Преобразуйте codegen команда к эквивалентному файлу проекта MATLAB Coder с именем project_file_name. Затем можно сгенерировать код из файла проекта при помощи другого codegen команда или приложение MATLAB Coder.

Можно также использовать -toproject опция для преобразования неполного codegen команда в файл проекта. Например, чтобы создать файл проекта myProjectTemplate.prj который содержит только параметры генерации кода, сохраненные в объекте строения cfg, выполните:

codegen -config cfg -toproject myProjectTemplate.prj
В этом случае myProjectTemplate.prj не содержит спецификаций функций точки входа или входных типов. Итак, вы не можете сгенерировать код из этого файла проекта. Можно открыть myProjectTemplate.prj в приложении MATLAB Coder и использовать его как шаблон для создания полных файлов проекта, которые можно использовать для генерации кода.

Управление codegen с помощью project_file_name -toproject опция не генерирует код. Он создает только файл проекта.

См. «Преобразование команды кодегена в эквивалентный проект MATLAB Coder».

-v

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

-?

Отобразите справку для codegen команда.

Задается как функция, существующая в текущей рабочей папке или в пути. Если файл MATLAB имеет путь, содержащий не 7-битные символы ASCII, такие как японские символы, codegen команда может не найти файл.

Если вы используете компилятор LCC, не называйте функцию точки входа main.

Пример: codegen myAddFunction

Примеры значений, которые определяют размер, класс и сложность входов предыдущей функции MATLAB. Положение входа в массиве ячеек должно соответствовать положению входного аргумента в определении функции MATLAB. Кроме того, вместо примера значения можно задать coder.Type объект. Как создать coder.Type объект, использование coder.typeof.

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

Для получения дополнительной информации см. «Задание свойств входных параметров функции точки входа».

Пример: codegen foo -args {1}

Пример: codegen foo2 -args {1, ones(3,5)}

Пример: codegen foo3 -args {1, ones(3,5), coder.typeof("hello")}

Разделенный пробелом список пользовательских файлов, включаемых в сгенерированный код. Порядок опций, внешних файлов и спецификаций функций взаимозаменим. Можно включать следующие типы файлов:

  • Файл C (.c)

  • Файл C++ (.cpp)

  • Заголовочный файл (.h)

  • Файл объекта (.o или .obj)

  • Библиотека (.a, .so, .dylib, или .lib)

  • Шаблон make-файла (.tmf)

    Примечание

    Поддержка шаблона make-файлов (TMF) будет удалена в будущем релизе. Вместо этого используйте подход набора инструментальных средств для создания сгенерированного кода.

Если эти файлы указаны по пути, который содержит не 7-битные символы ASCII, такие как японские символы, codegen команда может не найти файлы.

Пример: codegen foo myLib.lib

Количество выходных аргументов в функции точки входа C/C + +, сгенерированной для предыдущей функции MATLAB. Генератор кода производит заданное количество выходных аргументов в том порядке, в котором они происходят в определении функции MATLAB.

Пример: codegen myMLfnWithThreeOuts -nargout 2

Файл проекта, созданный из приложения MATLAB Coder. Генератор кода использует файл проекта, чтобы задать функции точки входа, определения входных типов и другие опции. Чтобы открыть приложение и создать или изменить файл проекта, используйте coder функция.

Пример: codegen foo.prj

Ограничения

  • Вы не можете сгенерировать код для скриптов MATLAB. Перепишите скрипт как функцию, чтобы сгенерировать код.

  • Генерация кода, когда текущая папка является частной папкой или папка @ не поддерживается, поскольку эти папки имеют специальные значения в MATLAB. Можно сгенерировать код, который вызывает методы в папках @ и функции в частных папках.

Совет

  • По умолчанию код генерируется в папке codegen/ target/ function. MEX-функции копируются в текущую рабочую папку.

  • Чтобы упростить процесс генерации кода, можно записать команды генерации кода в отдельный скрипт. В скрипте задайте типы входного параметра функции и опции генерации кода. Чтобы сгенерировать код, вызовите скрипт.

  • Каждый раз codegen генерирует тот же тип выхода для того же кода или проекта, он удаляет файлы из предыдущей сборки. Если вы хотите сохранить файлы из предыдущей сборки, прежде чем запускать другую сборку, скопируйте файлы в другое место.

  • Используйте coder функция для открытия приложения MATLAB Coder и создания проекта MATLAB Coder. Приложение предоставляет пользовательский интерфейс, который облегчает добавление файлов MATLAB, определение входных параметров и определение параметров сборки.

  • Вы можете позвонить codegen при помощи синтаксиса функции. Задайте codegen аргументы в виде векторов символов или строковых скаляров. Для примера:

    codegen('myfunction','-args',{2 3},'-report')
    
  • Чтобы предоставить строковый скаляр в качестве входов или задать a codegen аргумент как строковый скаляр, используйте синтаксис функции. Для примера:

    codegen('myfunction','-args',"mystring",'-report')
    codegen("myfunction","-args","mystring","-report")
    

    Предоставление строковых скалярных входов в командную форму codegen может привести к неожиданным результатам. См. раздел «Выбор синтаксиса команды или синтаксиса функции».

  • Для выполнения программных codegen вызывает, используйте синтаксис функции. Для примера:

    A = {'myfunction','-args',{2 3}};
    codegen(A{:})
    
Введенный в R2011a
Для просмотра документации необходимо авторизоваться на сайте