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. Для получения дополнительной информации смотрите Вызов Код C/C++ из кода MATLAB и Сконфигурируйте Сборку для Внешнего Кода 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- 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 Основной в Приложении.

Запишите функцию 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);

Define 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_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 double2single_cfg_name

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

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

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

. 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 float2fixed_cfg_name

Когда используется с -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

Задайте, использовать ли параметр отладки для компилятора 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 текстовый объект. Чтобы создать текстовый объект, использовать coder.typeof. Для переменных типа массив глобальной ячейки необходимо использовать этот формат.

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

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

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

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

Для получения дополнительной информации смотрите, Генерируют Код для Глобальных данных.

- Я include_path

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

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

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

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

Используйте своевременную (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:

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

Если не заданный, codegen встраивание использования и 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. Смотрите, что Генерация Кода доступа Сообщает информацию Программно.

-rowmajor

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

-silent

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

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

-singleC

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

У вас должен быть Fixed-Point Designer, чтобы использовать эту опцию.

-std:c89/c90

Используйте 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.

При использовании этой опции файл MEX и файлы, содержащие функции точки входа, должны быть расположены в той же папке.

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

- 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 с-toproject project_file_name опция не генерирует код. Это создает только файл проекта.

Смотрите Преобразуют codegen Команду в Эквивалентный Проект MATLAB Coder.

-v

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

-?

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

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

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

Пример: codegen myAddFunction

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

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

Для получения дополнительной информации смотрите Specify Properties Входных параметров функции Точки входа.

Пример: 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функция. 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