exponenta event banner

codegen

Создание кода C/C + + из кода MATLAB

Описание

пример

codegen options function -args {func_inputs} генерирует код C или 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 генерирует исполняемый файл Си, 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, которая использует перечислимые данные для активации светодиодного дисплея на основе состояния устройства. Он загорается зеленым светодиодным индикатором для индикации состояния ВКЛ. Он загорается красным светодиодным индикатором для индикации состояния 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.

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

В этом примере требуется Designer™ Fixed-Point.

Напишите функцию 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 с именем 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 с одной точностью, используя параметры конфигурации по умолчанию.

Требуется конструктор фиксированных точек.

-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 + + или исполняемого файла при наличии встроенного кодера.

    % 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/single.

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 с одинарной точностью. Для использования этой опции необходимо иметь конструктор фиксированных точек.

-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 в код с фиксированной точкой C. Для использования этой опции необходимо иметь конструктор фиксированных точек.

-g

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

-globals 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 и MATLAB имеют собственные копии глобальных данных. Для обеспечения непротиворечивости синхронизируйте их глобальные данные при каждом взаимодействии. Если данные не синхронизированы, их глобальные переменные могут отличаться.

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

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

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

-I include_path

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

Если путь содержит символы, не являющиеся 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:

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

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

-package zip_file_name

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

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

-preservearraydims

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

-profile

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

-report

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

При наличии встроенного кодера этот параметр также позволяет создавать отчет о замене кода.

-reportinfo info

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

-rowmajor

Создание кода, использующего макет массива «строка-большая». По умолчанию используется компоновка «основной столбец». Дополнительные сведения см. в разделе Создание кода, использующего макет главного массива строк.

-silent

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

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

-singleC

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

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

-std:c89/90

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

-std:c99

Для создания кода используйте библиотеку формул стандарта C99 (ISO).

-std:c++03

Для создания кода используйте библиотеку формул стандарта C++ 03 (ISO). Эту библиотеку можно использовать только при создании кода C++.

-std:c++11

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

-test test_file

Управляемый test_fileзамена вызова исходной функции MATLAB вызовом функции MEX. Использование этой опции совпадает с выполнением coder.runTest.

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

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

-toproject project_file_name

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

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

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

Управление codegen с -toproject project_file_name не создает код. Создается только файл проекта.

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

-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)

  • Файл создания шаблона (.tmf)

    Примечание

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

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

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

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

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

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

Пример: codegen foo.prj

Ограничения

  • Невозможно создать код для сценариев MATLAB. Перезаписать сценарий как функцию для создания кода.

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

Совет

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

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

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

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

  • Вы можете позвонить codegen с помощью синтаксиса функции. Укажите codegen аргументы как векторы символов или строковые скаляры. Например:

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

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

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

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

    A = {'myfunction','-args',{2 3}};
    codegen(A{:})
    

См. также

| | | | | | | | | (Конструктор фиксированных точек) | (Конструктор фиксированных точек) | (Конструктор фиксированных точек)

Представлен в R2011a