coder.EmbeddedCodeConfig

Параметры конфигурации для генерации кода C/C + + из кода MATLAB с помощью Embedded Coder

Описание

A coder.EmbeddedCodeConfig объект содержит параметры конфигурации, которые codegen использует для генерации статической библиотеки, динамически связанной библиотеки или исполняемой программы с Embedded Coder®. Передайте объект в codegen функция при помощи -config опция.

Создание

Описание

пример

cfg = coder.config(build_type) создает объект строения генерации кода для заданного типа сборки, который может быть статической библиотекой, динамически связанной библиотекой или исполняемой программой. Если установлен продукт Embedded Coder, он создает coder.EmbeddedCodeConfig объект. В противном случае создается coder.CodeConfig объект.

cfg = coder.config(build_type, 'ecoder', true) создает coder.EmbeddedCodeConfig объект для заданного типа выхода, даже если продукт Embedded Coder не установлен. Однако вы не можете сгенерировать код с помощью coder.EmbeddedCodeConfig объект, если не установлен Embedded Coder.

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

расширить все

Выход для сборки из сгенерированного кода C/C + +, заданный как одно из значений в этой таблице.

ЗначениеОписание
'LIB'Статическая библиотека
'DLL'Динамически связанная библиотека
'EXE'Исполняемая программа

Свойства

расширить все

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

ЗначениеОписание
'Faster Builds'

Оптимизирует сборку для меньших времен сборки.

'Faster Runs'

Оптимизирует сборку для более быстрого выполнения исполняемых файлов.

'Debug'

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

'Specify'

Включает CustomToolchainOptions свойство для индивидуальной настройки параметров для инструментов в выбранном наборе инструментальных средств. Если на Toolchain для свойства задано значение 'Automatically locate an installed toolchain', затем установка BuildConfiguration на 'Specify' изменяет Toolchain к расположенному набору инструментальных средств.

Уровень приведения типов данных для переменных в сгенерированном коде C/C + +, заданный как одно из значений в этой таблице.

ЗначениеОписание
'Nominal'

Это значение является значением по умолчанию.

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

short addone(short x)
{
  int i;
  i = x + 1;
  if (i > 32767) {
    i = 32767;
  }

  return (short)i;
}

'Standards'

Генерирует код C/C + +, который приводит типы данных в соответствие с MISRA® стандарты. Для примера:

short addone(short x)
{
  int i;
  i = (int)x + (int)1;
  if (i > (int)32767) {
    i = (int)32767;
  }

  return (short)i;
}

'Explicit'

Генерирует код C/C + +, который явно выводит значения типов данных. Для примера:

short addone(short x)
{
  int i;
  i = (int)x + 1;
  if (i > 32767) {
    i = 32767;
  }

  return (short)i;
}

См. Раздел «Типы данных управления» в Сгенерированном коде (Embedded Coder).

Установите эту опцию, чтобы указать, хотите ли вы сгенерировать или использовать существующее clang-format файл для форматирования сгенерированного кода. Выберите метод выбора файла форматирования, заданный как одно из значений в таблице.

ЗначениеОписание
'Generate'

Это значение является значением по умолчанию.

Создает clang-format файл для вашей сборки на основе настроек строения. The clang-format файл генерируется в codegen папка.

'Existing'

Форматирует сгенерированный код при помощи clang-format файл по вашему выбору. Использование clang-format позволяет детально контролировать форматирование вашего сгенерированного кода.

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

Для получения дополнительной информации смотрите https://clang.llvm.org/docs/ClangFormatStyleOptions.html.

Профилирование во время выполнения программы в цикле (SIL) или процессора в цикле (PIL), заданное как одно из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Отключение профилирования во время выполнения SIL или PIL.

trueПозволяет время выполнения, представляя во время SIL или выполнения PIL.

Смотрите Профилирование времени выполнения для SIL и PIL (Embedded Coder).

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

ЗначениеОписание
'Clang-format'

Генератор кода форматирует сгенерированный код согласно clang-format файл.

'Auto'

Использует внутренний эвристик, чтобы определить, форматирован ли сгенерированный код clang-format или MathWorks® инструмент форматирования.

Чтобы определить, форматирован ли сгенерированный код clang-format, в coder.config объект, установите Verbosity опция для 'Verbose'.

'MathWorks'

Заставляет генератор кода вернуться к инструменту форматирования MathWorks.

Шаблон генерации кода для файловых и функциональных баннеров в сгенерированном коде. По умолчанию CodeTemplate пуст, и генератор кода создает баннеры по умолчанию. Чтобы создать пользовательские баннеры, задайте CodeTemplate в coder.MATLABCodeTemplate объект, созданный из файла шаблона генерации кода (CGT). Смотрите Сгенерировать пользовательские файлы и функциональные баннеры для кода C/C + + (Embedded Coder).

Библиотека замещения кода для сгенерированного кода, заданная как одно из значений в этой таблице:

ЗначениеОписание
'None'

Это значение является значением по умолчанию.

Не использует библиотеку замещения кода.

Именованная библиотека замещения кода

Генерирует вызовы определенной платформы, компилятора или библиотеки замещения кода стандартов. Список именованных библиотек зависит от:

  • Установленные пакеты поддержки.

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

  • Создавали ли вы и регистрировали ли вы библиотеки замещения кода, используя продукт Embedded Coder.

Совместимые библиотеки зависят от этих параметров:

  • TargetLang

  • TargetLangStandard

  • ProdHWDeviceType в объекте строения аппаратной реализации.

Embedded Coder предлагает больше библиотек и возможность создавать и использовать пользовательские библиотеки замещения кода.

MATLAB® Coder™ генерирует минимальный набор #include операторы для заголовочных файлов, требуемых выбранной библиотекой замещения кода.

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

Примечание

MATLAB Coder не поддерживает обратные коллбэки TLC.

Максимальное количество столбцов перед пропуском линии в сгенерированном коде, заданное в виде положительного целого числа в области значений [45, 65536].

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

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

ЗначениеОписание
'Auto' Для C сгенерируйте многострочные комментарии. Для C++ сгенерируйте однострочные комментарии.
'Single-line'Сгенерируйте однострочные комментарии, которым предшествуют //.
'Multi-line'Сгенерируйте одно- или многострочные комментарии, разграниченные /* и */.

Для генерации кода C задайте стиль комментария в одну строку, только если ваш компилятор поддерживает его.

Зависимости: GenerateComments включает этот параметр.

См. раздел «Настройка стиля комментариев» для кода C/C + + (Embedded Coder).

Максимальное количество специализаций функций для рекурсии во время компиляции, заданное как положительное целое число. Чтобы запретить рекурсию в коде MATLAB, установите CompileTimeRecursionLimit в 0. Предел рекурсии во время компиляции по умолчанию достаточно велик для большинства рекурсивных функций, которые требуют этого типа рекурсии. Если генерация кода прекращается из-за предела рекурсии во время компиляции и требуется рекурсия во время компиляции, попробуйте увеличить предел. Также измените код MATLAB так, чтобы генератор кода использовал рекурсию во время выполнения. Смотрите Достигнутый предел рекурсии во время компиляции.

Максимальное количество команд, выполняемых постоянной папкой. В некоторых ситуациях генерация кода требует, чтобы определенные инструкции были постоянными. Если постоянное складывание прекращается до того, как эти инструкции будут свернуты постоянно, генерация кода прекращается. В этом случае увеличьте значение ConstantFoldingTimeout.

Смотрите Оптимизации MATLAB CODER в Сгенерированном коде.

Преобразование if-elseif-else шаблоны для switch-case операторы в сгенерированном коде, заданные как одно из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не преобразует if-elseif-else шаблоны для switch-case операторы.

trueГенератор кода пытается преобразовать if-elseif-else шаблоны для switch-case операторы. Генератор кода производит switch-case оператор только, если все потенциальные выражения случая скаляра целого числа значений.

См. «Управление стилем кода С» (Embedded Coder).

Имя класса интерфейса, когда вы генерируете код С++ с CppInterfaceStyle установлено на 'Methods'. В этом случае сгенерированный код для функций точки входа MATLAB состоит из методов, содержащихся в классе C++ с именем, заданным CppInterfaceClassName. Это свойство не влияет, когда вы задаете CppInterfaceStyle на 'Functions'.

См. «Генерация кода С++ с интерфейсом класса».

Стиль интерфейса к сгенерированному коду С++ для функций точки входа MATLAB, из которых вы генерируете код. По умолчанию функции точки входа становятся функциями C++. Если вы выбираете 'Methods', затем функции точки входа становятся методами в классе C++. Задайте имя класса при помощи свойства CppInterfaceClassName.

См. «Генерация кода С++ с интерфейсом класса».

Зависимости:

  • Настройка TargetLang на 'C++' включает этот параметр.

Будет ли создаваться пространство имен C++ для пакетов в коде MATLAB, заданном как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода создает пространства имен C++ для пакетов в коде MATLAB. См. «Организация сгенерированного кода С++ в пространства имен».

false

Генератор кода не производит пространства имен C++ для пакетов в коде MATLAB.

Зависимости:

  • Настройка TargetLang на 'C++' включает этот параметр.

Типы данных: logical

Пространство имен для сгенерированного кода С++. Генератор кода не производит код в пространстве имен, если вы не задаете непустой вектор символов.

См. «Организация сгенерированного кода С++ в пространства имен».

Зависимости:

  • Настройка TargetLang на 'C++' включает этот параметр.

Пространство имен для кода С++, сгенерированного для кода MathWorks. Генератор кода не производит такое пространство имен, если вы задаете это свойство как пустой символьный вектор.

См. «Организация сгенерированного кода С++ в пространства имен».

Зависимости:

  • Настройка TargetLang на 'C++' включает этот параметр.

Типы данных: char

Сгенерировать ли классы C++ или структуры стиля C для классов MATLAB в качестве одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

false

Генератор кода создает структуры стиля C для классов MATLAB.

Зависимости:

  • Настройка TargetLang на 'C++' включает этот параметр.

Типы данных: logical

Класс коллбэка для вызовов библиотеки BLAS в коде, сгенерированном для некоторых низкоуровневых векторных и матричных операций в коде MATLAB, заданном как вектор символов.

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

См. раздел «Ускорение матричных операций в сгенерированном автономном коде при помощи вызовов BLAS».

Макрос, который задает индивидуальную настройку сгенерированных имен файлов с дополнительными символами и лексемами. Для получения дополнительной информации смотрите Настройка имен файлов C/C + +, сгенерированных из кода MATLAB (Embedded Coder).

Класс коллбэка для вызовов библиотеки FFTW в коде, сгенерированном для функций FFT в коде MATLAB, заданном как вектор символов.

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

См. «Ускорение быстрых преобразований Фурье в сгенерированном автономном коде при помощи вызовов библиотеки FFTW».

Пользовательский код, который появляется в верхней части каждого файла заголовка C/C + +, сгенерированного из вашего кода MATLAB, кроме rtwtypes.h и rtwhalf.h, заданный как вектор символов.

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

Несколько имен папок, заданных как одно из значений в этой таблице.

ЗначениеОписание
Строковые массивы

Строковые массивы в CustomInclude. Для примера, cfg.CustomInclude = ["C:\Project","C:\Custom Files"];

Массив ячеек из символьных векторов

Массив ячеек из векторов символов в CustomInclude. Для примера, cfg.CustomInclude = {'C:\Project','C:\Custom Files'};

Вектор символов

Отдельное включение папок a pathsep символ в CustomInclude. Для примера, cfg.CustomInclude = ['C:\Project' pathsep 'C:\Custom Files'];

Примечание

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

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

Класс коллбэка для вызовов библиотеки LAPACK в коде, сгенерированном для некоторых функций линейной алгебры в коде MATLAB, заданном как вектор символов.

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

Смотрите Ускорение Увеличения Линейной Алгебры в Сгенерированном Автономном Коде При Помощи Вызовов LAPACK.

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

Несколько статических имен файлов библиотеки, заданных как одно из значений в этой таблице.

ЗначениеОписание
Строковые массивы

Строковые массивы в CustomLibrary. Для примера, cfg.CustomLibrary = ["myLib1.lib","myLib2.lib"];

Массив ячеек из символьных векторов

Массив ячеек из векторов символов в CustomLibrary. Для примера, cfg.CustomLibrary = {'myLib1.lib','myLib2.lib'};

Вектор символов

Разделите имена файлов статических библиотек на pathsep символ в CustomLibrary. Для примера, cfg.CustomLibrary = ['myLib1.lib' pathsep 'myLib2.lib'];

Примечание

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

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

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

Предположим, что вы задаете foo.cpp как исходный файл. Если foo.c и foo.cpp оба указаны в пути поиска файлов, вы не можете быть уверены, использует ли процесс сборки foo.c или foo.cpp.

Несколько имен исходных файлов, заданных как одно из значений в этой таблице.

ЗначениеОписание
Строковые массивы

Строковые массивы в CustomSource. Для примера, cfg.CustomSource = ["mySrc1.c","mySrc2.c"];

Массив ячеек из символьных векторов

Массив ячеек из векторов символов в CustomSource. Для примера, cfg.CustomSource = {'mySrc1.c','mySrc2.c'};

Вектор символов

Разделите имена исходных файлов на pathsep символ в CustomSource. Для примера, cfg.CustomSource = ['mySrc1.c' pathsep 'mySrc2.c'];

Примечание

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

Укажите код, который будет отображаться в верхней части каждого сгенерированного .c или .cpp файл (кроме rtwhalf.c или rtwhalf.cpp), вне любой функции. Задайте код как вектор символов.

Не задайте определение статической функции на С.

Пользовательский формат идентификатора для сгенерированных типов массивов EMX (Embeddable mxArray types), заданный как вектор символов. Для определения формата смотрите Настройка сгенерированных идентификаторов (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных Массивов EMX (Embeddable mxArrays) служебных функций, заданный как вектор символов. Для определения формата смотрите Настройка сгенерированных идентификаторов (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных идентификаторов локальной функции, заданный как вектор символов. Для определения формата смотрите Настройка сгенерированных идентификаторов (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных имен полей в глобальных идентификаторах типов, заданный как вектор символов. Для определения формата смотрите Настройка сгенерированных идентификаторов (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных идентификаторов глобальных переменных, заданный как вектор символов. Для определения формата смотрите Настройка сгенерированных идентификаторов (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных постоянных макро-идентификаторов, заданный как вектор символов. Для определения формата смотрите Настройка сгенерированных идентификаторов (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных локальных временных идентификаторов переменных, заданный как вектор символов. Для определения формата смотрите Настройка сгенерированных идентификаторов (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных идентификаторов глобального типа, заданный как вектор символов. Для определения формата смотрите Настройка сгенерированных идентификаторов (Embedded Coder).

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

Пользовательские настройки для инструментов в выбранном наборе инструментальных средств, заданные как массив ячеек.

Зависимости:

  • The Toolchain свойство определяет, какие инструменты и опции появляются в массиве ячеек.

  • Установка BuildConfiguration свойство к Specify включает CustomToolchainOptions.

Сначала получите текущие настройки. Для примера:

cfg = coder.config('lib');
cfg.BuildConfiguration='Specify';
opt = cfg.CustomToolchainOptions

Затем отредактируйте значения в opt.

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

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

ЗначениеОписание
'CBuiltIn'

Это значение является значением по умолчанию.

Генератор кода использует встроенные типы данных C.

'CoderTypeDefs'Генератор кода использует предопределенные типы данных из rtwtypes.h

Строение объект для генерации кода для нейронных сетей для глубокого обучения, заданный как coder.MklDNNConfig объект или coder.ARMNEONConfig объект.

A coder.MklDNNConfig объект содержит параметры, характерные для генерации кода С++ для глубокого обучения с использованием Intel® MKL-DNN. Как создать coder.MklDNNConfig объект, использование coder.DeepLearningConfig. Для примера:

cfg = coder.config('mex');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn');

A coder.ARMNEONConfig объект содержит параметры, специфичные для генерации кода С++ для глубокого обучения с использованием ARM® Вычислите библиотеку. Как создать coder.ARMNEONConfig объект, использование coder.DeepLearningConfig. Для примера:

cfg = coder.config('lib');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('arm-compute');

Для генерации кода для нейронных сетей для глубокого обучения требуются Deep Learning Toolbox™ и пакет поддержки MATLAB Coder Interface for Deep Learning Libraries.

Смотрите Генерацию кода для нейронных сетей для глубокого обучения с MKL-DNN и Генерацию кода для нейронных сетей для глубокого обучения с ARM Compute Library.

Зависимости: Если DeepLearningConfig установлено, codegen устанавливает TargetLang на C++.

Описание объекта, заданное как вектор символов.

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

ЗначениеОписание
'Threshold'

Это значение является значением по умолчанию.

Генератор кода динамически выделяет память на куче для массивов переменного размера, размер которых (в байтах) больше или равен DynamicMemoryAllocationThreshold.

'AllVariableSizeArrays'Генератор кода динамически выделяет память для всех массивов переменного размера на куче.
'Off'

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

Неограниченные массивы переменного размера требуют динамического выделения памяти.

Зависимости:

  • EnableVariableSizing включает этот параметр.

  • Установка этого DynamicMemoryAllocation на 'Threshold' включает DynamicMemoryAllocationThreshold параметр.

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

Реализация динамически выделенного массива на интерфейсе сгенерированной функции C/C + +, заданной в качестве одного из значений в этой таблице.

ЗначениеОписание
'Auto'

Это значение по умолчанию. Если вы задаете TargetLang параметр в 'C++' или 'C', это значение соответственно ведет себя как тот же флаг.

'C'

Сгенерированный код использует стиль C emxArray структура данных для реализации динамически выделенных массивов. Смотрите Использование массивов C в Сгенерированных Интерфейсах Функций.

'C++'

Если вы задаете TargetLang параметр в 'C'это значение отключено.

Сгенерированный код использует coder::array шаблон класса для реализации динамически выделенных массивов. См. Использование динамически выделенных массивов C++ в сгенерированных интерфейсах функций.

Зависимости:

  • EnableVariableSizing включает этот параметр.

Порог размера для динамического выделения памяти массивов переменного размера, заданный как положительное целое число. Генератор кода использует динамическое выделение памяти для массивов переменного размера, размер которых (в байтах) больше или равен порогу.

Зависимости:

  • Настройка DynamicMemoryAllocation на 'Threshold' включает этот параметр.

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

Автоматические вызовы внешних функций в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода обрабатывает некоторые общие функции визуализации как внешние функции. Вы не должны объявлять эти функции как внешние при помощи coder.extrinsic. Эта возможность сокращает количество времени, которое вы тратите, делая свой код подходящим для генерации кода.

falseГенератор кода не рассматривает общие функции визуализации как внешние функции, если вы не объявляете их внешними coder.extrinsic

Некоторые общие функции визуализации plot, disp, и figure. Смотрите Использование MATLAB Engine для выполнения вызова функции в сгенерированном коде.

Автоматическая параллелизация for циклы, заданные в качестве одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не параллелизирует автоматически for циклы.

true

Генератор кода автоматически параллелизирует for циклы в сгенерированном коде. Автоматическая параллелизация может значительно улучшить скорость выполнения сгенерированного кода. Смотрите раздел Автоматическое параллелирование циклов в сгенерированном коде.

Типы данных: logical

Пользовательские имена для типов данных MATLAB в сгенерированном коде C/C + +, заданные как одно из значений в таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Пользовательские имена для типов данных MATLAB не разрешены.

true

Разрешены пользовательские имена для типов данных MATLAB. Задайте пользовательские имена при помощи ReplacementTypes. Настройка EnableCustomReplacementTypes на true включает ReplacementTypes параметр.

memcpy оптимизация, заданная как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

false

Генератор кода не использует memcpy оптимизация.

Параллелизация parfor-циклы, заданные как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

false

Генератор кода обрабатывает parfor-циклы как for-циклы.

Посмотрите parfor.

Использование библиотеки OpenMP несовместимо с JIT-компиляцией. Если EnableJIT и EnableOpenMP являются trueгенератор кода использует JIT-компиляцию и обрабатывает parfor-циклы как for-циклы.

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

ЗначениеОписание
true

Это значение является значением по умолчанию.

Рекурсивные функции разрешены в сгенерированном коде.

false

Рекурсивные функции не разрешены в сгенерированном коде.

Некоторые стандарты кодирования, такие как MISRA, не допускают рекурсии. Чтобы увеличить вероятность генерации кода, который соответствует MISRA C®, задать EnableRuntimeRecursion на false.

Если ваш код MATLAB требует рекурсии и EnableRuntimeRecursion во время выполнения является false, генерация кода прекращает работать.

Смотрите Генерацию кода для рекурсивных функций.

Замена умножений на степени двойки на подписанные левые побитовые сдвиги в сгенерированном коде C/C + +, заданная как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода использует знаковые левые сдвиги для умножения на степени двойки. Примером сгенерированного кода C, который использует слева со знаком для умножения на восемь сдвиги, является:

i <<= 3;

false

Генератор кода не использует подписанные левые сдвиги для умножения на степени двойки. Примером сгенерированного кода C, который не использует слева со знаком сдвига для умножения на восемь, является:

i = i * 8;

GPU Coder™ всегда устанавливает EnableSignedLeftShifts свойство true.

Некоторые стандарты кодирования, такие как MISRA, не допускают побитовых операций над подписанными целыми числами. Чтобы увеличить вероятность генерации кода, совместимого с MISRA C, установите EnableSignedLeftShifts на false.

Смотрите Control Signed Left Сдвигов в Generated Code (Embedded Coder).

Подписанные правые побитовые сдвиги в сгенерированном коде, заданные как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода использует подписанные правые сдвиги. Примером сгенерированного кода C, который использует правильный сдвиг со знаком, является:

i >>= 3

false

Генератор кода заменяет правые сдвиги на подписанных целых числах вызовом функции в сгенерированном коде. Для примера:

i = asr_s32(i, 3U);

GPU Coder всегда устанавливает EnableSignedRightShifts свойство true.

Некоторые стандарты кодирования, такие как MISRA, не допускают побитовых операций над подписанными целыми числами. Чтобы увеличить вероятность генерации MISRA-C:2004 совместимого кода, установите EnableSignedRightShifts на false.

Оптимизация снижения прочности, заданная в качестве одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не использует оптимизацию снижения прочности.

true

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

Трассируемость в отчете генерации кода, заданная как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Отчет генерации кода включает трассируемость кода. Смотрите Интерактивное Отслеживание между Кодом MATLAB и Сгенерированным Кодом C/C + + (Embedded Coder).

false

Отчет генерации кода не включает трассируемость кода.

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

ЗначениеОписание
true

Это значение является значением по умолчанию.

Для генерации кода разрешены массивы переменного размера.

false

Для генерации кода недопустимы массивы переменного размера.

Зависимости:

  • Включает Dynamic memory allocation.

Смотрите Генерацию кода для массивов переменного размера.

Режим разбиения файлов, заданный как одно из значений в этой таблице.

ЗначениеОписание
'MapMFileToCFile'

Это значение является значением по умолчанию.

Генератор кода производит отдельные файлы C/C + + для каждого языкового файла MATLAB.

'SingleFile'Генератор кода создает один файл для функций C/C + +, которые сопоставлены с вашими функциями точки входа MATLAB. Генератор кода производит отдельные файлы C/C + + для служебных функций.

Смотрите, как Сгенерированный код разделы MATLAB Coder.

Отчет о статических метриках кода, заданный как одно из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не запускает статический анализ метрик кода во время генерации кода. Можно запустить анализ и создать отчет позже, щелкнув Code Metrics на вкладке Summary отчета генерации кода.

true

Генератор кода запускает статический анализ метрик кода и формирует отчет во время генерации кода.

Чтобы открыть отчет по метрикам кода, щелкните ссылку Code Metrics на вкладке Summary отчета о генерации кода.

Зависимости:

  • Генератор кода формирует отчет о статических метриках кода, только если GenerateReport true или если вы задаете -report опция codegen отчет.

Смотрите Отчет о генерации статических метрик кода для кода, сгенерированного из кода MATLAB (Embedded Coder).

Генерация только исходного кода, заданная в качестве одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода производит исходный код C/C + + и создает объектный код.

true

Генератор кода производит исходный код C/C + +, но не вызывает команду make или код объекта сборки. Когда вы итератируете между изменением кода MATLAB и генерацией кода C/C + +, генерация только кода может сэкономить время.

Отчет о замене кода, указанный как на значениях в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не создает отчет о замене кода.

true

Генератор кода создает отчет о замене кода, в котором суммируются замены из выбранной библиотеки замещения кода. Отчет содержит отображение между каждым образцом замены кода и линией кода MATLAB, которая инициировала замену.

Комментарии в сгенерированном коде, заданные как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода помещает комментарии в сгенерированный код.

falseГенератор кода не помещает комментарии в сгенерированный код.

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

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода может не сгенерировать случай по умолчанию для некоторых операторов switch.

trueГенератор кода создает случай по умолчанию для всех операторов switch в сгенерированном коде.

Некоторые стандарты кодирования, такие как MISRA, требуют случая по умолчанию для операторов switch.

Пример генерации основного файла C/C + +, заданный как одно из значений в этой таблице.

ЗначениеОписание
'GenerateCodeOnly'

Это значение является значением по умолчанию.

Генератор кода генерирует пример основной функции C/C + +, но не компилирует ее.

'DoNotGenerate'

Генератор кода не генерирует пример основной функции C/C + +.

'GenerateCodeAndCompile'

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

Если на GenCodeOnly параметр trueгенератор кода не компилирует основную функцию C/C + +.

Примером основной функции является шаблон, который поможет вам написать основную функцию C/C + +, которая вызывает сгенерированный код C/C + +. Смотрите Включить сгенерированный код Используя Пример Основной Функции.

Генерация make-файла в процессе сборки, заданная как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода генерирует make-файл в процессе сборки.

falseГенератор кода не генерирует make-файл в процессе сборки. Укажите инструкции для обработки после генерации кода, включая компиляцию и связывание, в команде после генерации кода. См. раздел Индивидуальную настройку процесса сборки.

Генерация файлов поддержки для нефинитных данных, заданная как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода производит файлы поддержки для нефинитных данных (Inf и NaN) только если сгенерированный код использует нефинитные данные.

false

Генератор кода всегда производит файлы поддержки для нефинитных данных (Inf и NaN).

Зависимости:

  • Настройка SupportNonFinite на true включает этот параметр.

Отчет о генерации кода, заданный как одно из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

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

trueГенератор кода создает отчет генерации кода.

Объект, задающий плату оборудования. Как создать coder.Hardware объект, использование coder.hardware. Для примера:

cfg = coder.config('lib');
hw = coder.hardware('Raspberry Pi');
cfg.Hardware = hw;

Прежде чем вы используете coder.hardwareнеобходимо установить пакет поддержки для оборудования платы.

Зависимости:

  • Настройка Hardware настраивает объект аппаратной реализации и другие параметры конфигурации для конкретной аппаратной платы.

  • Если DeepLearningConfig задано значение coder.ARMNEONConfig объект и Hardware пуст, тогда codegen устанавливает GenCodeOnly свойство к true.

Примечание:

  • Предположим, что вы создаете coder.CodeConfig cfg объекта в сеансе работы с MATLAB и использовать его в другом сеансе работы с MATLAB. Если в хост-компьютер MATLAB для второго сеанса нет оборудования платы, указанной в cfg.Hardware свойство, установленное на нем, этот параметр возвращается к значению по умолчанию. Значение по умолчанию [].

Чтобы задать плату оборудования для выполнения PIL, смотрите Выполнение PIL с помощью ARM Cortex-A в командной строке (Embedded Coder).

Объект аппаратной реализации, который задает аппаратно-специфические параметры конфигурации для генерации кода C/C + +.coder.config создает coder.EmbeddedCodeConfig объект со HardwareImplementation значение свойства установлено в coder.HardwareImplementation объект со значениями параметров по умолчанию для хоста-компьютера MATLAB.

Чтобы предотвратить ошибки компиляции из-за многократного включения заголовочных файлов, генератор кода производит либо #ifndef или #pragma once создает в сгенерированных файлах заголовков. Если ваш проект использует отдельные файлы, которые используют те же макросы препроцессора, то сгенерируйте код с #pragma once конструировать. Поведение компиляции #pragma once не стандартизирован.

Задайте HeaderGuardStyle как одно из значений в этой таблице.

ЗначениеОписание
UseIncludeGuard

Генератор кода производит #ifndef стиль #include охрана.

UsePragmaOnceГенератор кода производит #pragma once стиль #include охрана.

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

ЗначениеОписание
false

Это значение является значением по умолчанию.

Этот отчет генерации кода не выделяет потенциальные проблемы с типами данных.

true

Отчет генерации кода подсвечивает код MATLAB, который приводит к операциям с одинарной точностью или с двойной точностью в сгенерированном коде C/C + +. Если у вас есть Fixed-Point Designer™, в отчете также подсвечиваются выражения в коде MATLAB, которые приводят к дорогим операциям с фиксированной точкой в сгенерированном коде.

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

ЗначениеОписание
true

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

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

Смотрите Проект для Row-Major Array Layout.

Инициализируйте генерацию функции, заданную как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода производит функцию инициализации.

false

Генератор кода не производит функцию инициализации. Если вы задаете IncludeInitializeFcn на false и требуется функция инициализации, для примера, чтобы вызвать вспомогательный код для нефинитных данных (Inf или NaN), генератор кода выдает сообщение об ошибке.

Смотрите шаблоны кода MATLAB, которые требуют непустой функции инициализации в сгенерированном коде (Embedded Coder).

Завершает генерацию функции, заданную как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода производит функцию завершения.

false

Генератор кода не производит функцию завершения. Если вы задаете IncludeTerminateFcn на false и требуется функция завершения, для примера, чтобы освободить память, генератор кода выдает предупреждение.

Количество символов на каждом уровне отступа, заданное в виде положительного целого числа в области значений [2,8].

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

ЗначениеОписание
'K&R'

Это значение является значением по умолчанию.

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

void addone(const double x[6], double z[6])
{
  int i0;
  for (i0 = 0; i0 < 6; i0++) {
    z[i0] = x[i0] + 1.0;
  }
}

'Allman'

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

void addone(const double x[6], double z[6])
{
  int i0;
  for (i0 = 0; i0 < 6; i0++)
  {
    z[i0] = x[i0] + 1.0;
  }
}

Назначение плавающего и двойного нуля с memset, заданное как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

При возможности генератор кода использует memset оптимизация для присвоения нуля с плавающей точкой последовательным элементам массива. Чтобы назначить последовательные элементы массива, memset оптимизация использует memset вызов. Когда количество элементов, которые нужно назначить, известно во время компиляции, генератор кода использует MemcpyThreshold свойство, чтобы определить, использовать ли оптимизацию. Смотрите Оптимизацию мемсета.

false

Генератор кода не использует memset оптимизация для назначения элементов с плавающей точкой и двойного нуля последовательным элементам массива.

Инкрустация поведения во все сайты вызовов, где MathWorks вызывает другую функцию MathWorks, заданную в качестве одного из значений в этой таблице.

ЗначениеОписание
'Speed'

Это значение является значением по умолчанию.

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

'Always'

Всегда выполняет инкрустацию в месте вызова.

'Readability'

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

'Never'

Никогда не вводит вызовы функций. Приводит к максимальной читаемости. Этот параметр может значительно снизить эффективность сгенерированного кода.

Даже если вы выбираете 'Always' или 'Never' опция для настройки, в некоторых случаях, генератор кода может не строго следовать этой инструкции. Для примера, если существует конфликт, coder.inline('always') или coder.inline('never') директива, помещенная в тело функции, переопределяет эту опцию. Для получения дополнительной информации смотрите Взаимодействие между различными элементами управления встраиванием.

См. Раздел «Управление встраиванием для точной настройки эффективности и читаемости сгенерированного кода».

Инкрустация поведения во все сайты вызовов, где функция, которую вы написали, вызывает функцию MathWorks, или функция MathWorks вызывает функцию, которую вы написали. Задается как одно из значений в этой таблице.

ЗначениеОписание
'Speed'

Это значение является значением по умолчанию.

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

'Always'

Всегда выполняет инкрустацию в месте вызова.

'Readability'

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

'Never'

Никогда не вводит вызовы функций. Приводит к максимальной читаемости. Этот параметр может значительно снизить эффективность сгенерированного кода.

Даже если вы выбираете 'Always' или 'Never' опция для настройки, в некоторых случаях, генератор кода может не строго следовать этой инструкции. Для примера, если существует конфликт, coder.inline('always') или coder.inline('never') директива, помещенная в тело функции, переопределяет эту опцию. Для получения дополнительной информации смотрите Взаимодействие между различными элементами управления встраиванием.

См. Раздел «Управление встраиванием для точной настройки эффективности и читаемости сгенерированного кода».

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

ЗначениеОписание
'Speed'

Это значение является значением по умолчанию.

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

'Always'

Всегда выполняет инкрустацию в месте вызова.

'Readability'

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

'Never'

Никогда не вводит вызовы функций. Приводит к максимальной читаемости. Этот параметр может значительно снизить эффективность сгенерированного кода.

Даже если вы выбираете 'Always' или 'Never' опция для настройки, в некоторых случаях, генератор кода может не строго следовать этой инструкции. Для примера, если существует конфликт, coder.inline('always') или coder.inline('never') директива, помещенная в тело функции, переопределяет эту опцию. Для получения дополнительной информации смотрите Взаимодействие между различными элементами управления встраиванием.

См. Раздел «Управление встраиванием для точной настройки эффективности и читаемости сгенерированного кода».

Автоматическое открытие отчета генерации кода в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

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

trueГенератор кода создает и открывает отчет генерации кода.

Циклы с меньшим количеством итераций, чем этот порог, являются кандидатами для автоматического развертывания генератором кода. Этот порог применяется ко всем for-циклы в коде MATLAB. Для индивидуума for-цикл, a coder.unroll директива, размещенная непосредственно перед циклом, имеет приоритет над циклом развертывания оптимизации. Порог может также применяться к некоторым for- циклы, произведенные во время генерации кода.

См. раздел «Разрегулирование циклов».

Текст справки по функции MATLAB в баннере функций в сгенерированном коде задается как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода включает текст справки функции MATLAB в баннер функции в сгенерированном коде.

false

Генератор кода рассматривает текст справки как комментарий пользователя.

Если этот параметр не выбран, MATLAB Coder рассматривает текст справки как комментарий пользователя.

Зависимости:

  • GenerateComments включает этот параметр.

Включение исходного кода MATLAB в качестве комментариев в сгенерированный код, заданное как одно из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

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

true

Генератор кода вставляет исходный код MATLAB в качестве комментариев в сгенерированный код. Тег трассируемости непосредственно предшествует каждой строке исходного кода. Тег трассируемости помогает вам найти соответствующий исходный код MATLAB. Смотрите Трассировка сгенерированного кода C/C + + к исходному коду MATLAB.

Если у вас есть Embedded Coder, в отчете о генерации кода тег трассируемости соединяется с исходным кодом.

Генератор кода также включает сигнатуру функции MATLAB в функциональный баннер.

Зависимости:

  • GenerateComments включает этот параметр.

Смотрите Трассировка сгенерированного кода C/C + + к исходному коду MATLAB.

Максимальное количество символов в сгенерированных идентификаторах в виде положительного целого числа в области значений [31, 2048]. Это свойство применяется к сгенерированной функции, определению типа и именам переменных. Чтобы избежать усечения идентификаторов целевым компилятором C/C + +, задайте значение, которое соответствует максимальной длине идентификатора целевого компилятора C/C + +.

Это свойство не применяется к экспортированным идентификаторам, таким как сгенерированные имена для функций точки входа или API-функций emxArray. Если длина экспортированного идентификатора превышает максимальную длину идентификатора целевого компилятора C/C + +, целевой компилятор C/C + + обрезает экспортированный идентификатор.

Значения по умолчанию:

  • Если TargetLang установлено в 'C', значение по умолчанию MaxIdLength является 31.

  • Если TargetLang установлено в 'C++', значение по умолчанию MaxIdLength является 1024.

Минимальный размер, в байтах, для оптимизации memcpy или memset, заданный как положительное целое число.

Чтобы оптимизировать сгенерированный код, который копирует последовательные элементы массива, генератор кода пытается заменить код на memcpy вызов. Чтобы оптимизировать сгенерированный код, который присваивает буквальную константу последовательным элементам массива, генератор кода пытается заменить код на memset вызов.

Количество байтов - это количество элементов массива, которые нужно скопировать или назначить, умноженное на количество байтов, необходимое для типа данных C/C + +.

Если количество элементов, которые нужно скопировать или назначить, переменное (не известно во время компиляции), генератор кода игнорирует MemcpyThreshold свойство.

Смотрите memcpy Оптимизация и memset Оптимизация.

Многократный входящий код, заданный как одно из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не производит многократный входящий код.

true

Генератор кода производит многоразовый код с повторным использованием, который является входным.

См. «Повторный код».

Имя объекта, заданное как вектор символов.

Выход для сборки из сгенерированного кода C/C + +, заданный как одно из значений в этой таблице.

ЗначениеОписание
'LIB'Статическая библиотека
'DLL'Динамически связанная библиотека
'EXE'Исполняемая программа

Уровень круглой скобки в сгенерированном коде, заданный как одно из значений в этой таблице.

ЗначениеОписание
'Nominal'

Это значение является значением по умолчанию.

Генератор кода вставляет круглые скобки, чтобы сбалансировать читаемость и визуальную сложность. Для примера:

Out = ((In2 - In1 > 1.0) && (In2 > 2.0));

'Maximum'

Генератор кода включает круглые скобки, чтобы задать значение, не полагаясь на приоритет оператора. Код, сгенерированный с помощью этой настройки, соответствует требованиям MISRA. Для примера:

 Out = (((In2 - In1) > 1.0) && (In2 > 2.0));

'Minimum'

Генератор кода вставляет круглые скобки, где это требуется ANSI® C или C++, или чтобы переопределить приоритет по умолчанию. Для примера:

Out = In2 - In1 > 1.0 && In2 > 2.0;

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

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

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

Примечание

Функция точки входа, которая записывает в поле параметра структуры, перезаписывает входное значение.

falseСгенерированный код пропускает структуры по значению.

Этот параметр применяется только к функциям точки входа.

Смотрите Передавать аргументы Структуры по Ссылке или по Значению в Сгенерированном Коде.

Команда для настройки обработки сборки после генерации MEX-функции с codegen, заданный как вектор символов.

См. раздел Индивидуальную настройку процесса сборки.

Сохранение extern ключевое слово в объявлениях функций в сгенерированном коде, заданное как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода включает в себя extern ключевое слово в объявлениях для внешних функций.

false

Генератор кода удаляет extern ключевое слово из объявлений функций.

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

ЗначениеОписание
false

Сгенерируйте код, который использует одномерное индексирование. (Это значение является значением по умолчанию.)

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

См. «Генерация кода, который использует N-мерное индексирование».

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

ЗначениеОписание
'None'

Это значение является значением по умолчанию.

Генератор кода не должен сохранять какие-либо имена переменных. Он может повторно использовать любые переменные, которые удовлетворяют требованиям для повторного использования переменных.

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

'UserNames'

Генератор кода сохраняет имена, которые соответствуют переменным, которые вы задаете в коде MATLAB. Оно не заменяет ваше имя переменной другим именем и не использует ваше имя для другой переменной. Чтобы улучшить читаемость, установите PreserveVariableNames на 'UserNames'. Затем вы можете легче проследить переменные в сгенерированном коде назад к переменным в коде MATLAB.

Настройка PreserveVariableNames на 'UserNames' не препятствует оптимизации удалить ваши переменные из сгенерированного кода или препятствует повторному использованию компилятором C/C + + переменных в сгенерированном двоичном коде.

'All'

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

См. «Сохранение имен переменных в сгенерированном коде».

Обнаружение кода с плавающей точкой, заданное как одно из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода позволяет использовать данные и операции с плавающей точкой.

true

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

Зависимости:

  • Настройка PurelyIntegerCode на true отключает SupportNonFinite параметр. Настройка PurelyIntegerCode на false включает SupportNonFinite параметр.

Задайте пользовательские имена для следующих встроенных типов данных MATLAB: double, single, uint8, uint16, uint32, uint64, int8, int16, int32, int64, char, и logical которые находятся в сгенерированном коде C/C + +.

Зависимости:

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

Смотрите Информацию отчета Генерации кода доступа Программно и кодер. Свойства ReportInfo.

Отчетность о потенциальных различиях, заданная в качестве одного из значений в этой таблице:

ЗначениеОписание
trueГенератор кода сообщает о потенциальных различиях в поведении между сгенерированным кодом и кодом MATLAB. Потенциальные различия перечислены на вкладке отчета генерации кода. Разность потенциалов является различием, которое происходит во время исполнения только при определенные обстоятельства.
falseГенератор кода не сообщает о потенциальных различиях.

Смотрите Отчеты о потенциальных различиях.

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

Несколько зарезервированных имен, заданных как одно из значений в этой таблице.

ЗначениеОписание
Строковые массивы

Строковые массивы в ReservedNameArray. Для примера, cfg.ReservedNameArray = ["reserve1","reserve2","reserve3"].

Массив ячеек из символьных векторов

Массив ячеек из векторов символов в ReservedNameArray. Для примера, cfg.ReservedNameArray = {'reserve1','reserve2','reserve3'}.

Векторы символов

Список зарезервированных имен, разделенных точкой с запятой в ReservedNameArray. Для примера, cfg.ReservedNameArray = 'reserve1;reserve2;reserve3'.

Примечание

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

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

ЗначениеОписание
false

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

trueСгенерируйте код, который использует размещение массива основной строки.

См. «Генерация кода, который использует размещение массива Row-Major».

Генерация вызова функции инициализации в начале сгенерированных функций точки входа, заданная как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

false

Сгенерированные функции точки входа не включают вызовы функции инициализации.

Зависимости:

  • Настройка IncludeInitializeFcn и IncludeTerminateFcn на true включает этот параметр.

  • Настройка MultiInstanceCode на true отключает этот параметр.

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

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

ЗначениеОписание
false

Это значение является значением по умолчанию.

Сгенерированный код не проверяет на ошибки, такие как индексация вне границ массива.

true

Сгенерированный код проверяет на ошибки, такие как индексация вне границ массива.

Программное обеспечение для создания отчетов об ошибках использует fprintf для записи сообщений об ошибке в stderr. В нем используются abort чтобы завершить работу приложения. Если fprintf и abort не доступны, вы должны предоставить их. The abort функция внезапно завершает работу программы. Если ваша система поддерживает сигналы, можно поймать сигнал прерывания (SIGABRT), чтобы вы могли контролировать завершение программы.

Сообщения об ошибке указаны на английском языке.

См. "Генерация автономного кода C/C + +", который обнаруживает и сообщает об ошибках во время выполнения ".

Поддержка целочисленного переполнения, заданная как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

false

Генератор кода не производит код, чтобы обработать целочисленное переполнение. Не устанавливать SaturateOnIntegerOverflow на false если вы не уверены, что ваш код не зависит от поддержки целочисленного переполнения. Если вы отключаете поддержку целочисленного переполнения и включена проверка ошибок времени выполнения, сгенерированный код создает ошибку для переполнений. Если вы отключили поддержку целочисленного переполнения и отключили проверку ошибок времени выполнения, поведение переполнения зависит от целевого компилятора C. В стандарте C поведение для целочисленного переполнения не определено. Однако большинство компиляторов C переносятся при переполнении.

Этот параметр применяется только к встроенным целым типам MATLAB. Он не применяется к двойным, одиночным или типам данных с фиксированной точкой.

См. «Отключить поддержку целочисленного переполнения или нефинитов».

Отладка сгенерированного кода на уровне источника во время выполнения программы в цикле (SIL), заданная в качестве одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Отключает отладку сгенерированного кода во время выполнения SIL.

true

Позволяет отладчику наблюдать поведение кода во время выполнения программы в цикле (SIL).

Поддерживаемые отладчики:

  • В Windows®, Microsoft® Визуальный C++® отладчик.

  • На Linux®, GNU® Отладчик отображения данных (DDD).

См. раздел Отладка сгенерированного кода во время выполнения SIL (Embedded Coder).

Режим проверки постоянного входа для выполнения SIL или PIL, заданный как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

false

Выполнение SIL или PIL не сравнивает значение, которое тестовый файл предоставляет для постоянного входного параметра со значением, заданным во время генерации кода. При выполнении SIL или PIL используется значение, заданное во время генерации кода. Если в тестовом файле используется другое значение, результаты в MATLAB могут отличаться от результатов в выполнении SIL или PIL.

Можно ускорить выполнение SIL или PIL путем установки SILPILCheckConstantInputs на false.

Смотрите Ускорение выполнения SIL/PIL путем отключения проверки Входа и Глобальных данных синхронизации (Embedded Coder)

Глобальные данные для выполнения SIL или PIL, заданный как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Выполнение SIL или PIL синхронизирует значения глобальных переменных в среде выполнения SIL или PIL со значениями в рабочем пространстве MATLAB. Если глобальная переменная является постоянной, и ее значение в среде выполнения SIL или PIL отличается от ее значения в рабочем пространстве MATLAB, возникает ошибка.

false

Выполнение SIL или PIL не синхронизирует значения глобальных переменных в среде выполнения SIL или PIL со значениями в рабочем пространстве MATLAB. Если значения не синхронизированы, результаты в MATLAB могут отличаться от результатов в выполнении SIL или PIL.

Можно ускорить выполнение SIL или PIL путем установки SILPILSyncGlobalData на false.

Смотрите Ускорение выполнения SIL/PIL путем отключения проверки Входа и Глобальных данных синхронизации (Embedded Coder)

Максимальное использование стека для каждого приложения в байтах в виде положительного целого числа. Установите предел ниже доступного размера стека. В противном случае может произойти переполнение стека во время выполнения. Компилятор C обнаруживает и сообщает о переполнении стека.

См. «Отключить поддержку целочисленного переполнения или нефинитов».

Поддержка нефинитных значений, заданная как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Если GenerateNonFiniteFilesIfUsed установлено в trueгенератор кода производит код для поддержки нефинитных значений (Inf и NaN) только в том случае, если они используются.

Если GenerateNonFiniteFilesIfUsed установлено в falseГенератор кода всегда производит код, чтобы поддерживать нефинитные значения (Inf и NaN).

false

Генератор кода не производит код для поддержки нефинитных значений.

См. «Отключить поддержку целочисленного переполнения или нефинитов».

Язык для использования в сгенерированном коде, заданный как 'C' или 'C++'. Если вы задаете C++, генератор кода переносит код С в файлы .cpp, чтобы можно было использовать компилятор C++ и интерфейс с внешними приложениями C++. Он не генерирует классы C++.

Зависимости: Если DeepLearningConfig установлено, codegen устанавливает TargetLang на C++.

The 'Auto' опция использует TargetLang настройка, чтобы выбрать, какой стандарт языка использовать для сгенерированного кода. Стандарт языка по умолчанию зависит от выбранного языка. Для C библиотека по умолчанию 'C99 (ISO)'. Для C++ библиотека по умолчанию 'C++11 (ISO)'.

Языковые стандарты для использования в сгенерированном коде, заданные как один из следующих векторов символов:

  • 'C89/C90 (ANSI)'

  • 'C99 (ISO)'

  • 'C++03 (ISO)'

  • 'C++11 (ISO)'

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

См. раздел Изменение стандартной математической библиотеки.

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

Примечание:

  • Предположим, что вы создаете coder.CodeConfig cfg объекта в сеансе работы с MATLAB и использовать его в другом сеансе работы с MATLAB. Если в хост-компьютер MATLAB для второго сеанса нет набора инструментальных средств, заданного в cfg.Toolchain свойство, установленное на нем, этот параметр возвращается к значению по умолчанию. Значение по умолчанию 'Automatically locate an installed toolchain'.

Процесс генерации кода задается отображение как одно из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не отображает прогресс генерации кода.

true

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

Отображать ли состояние прогресса генерации кода в командной строке MATLAB в виде одного из значений в этой таблице.

ЗначениеОписание
'Silent'

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

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

'Info'

Это значение является значением по умолчанию.

По сравнению с 'Silent' mode, если генерация кода завершается успешно, отображаются следующие дополнительные сообщения:

  • Code generation successful

  • Ссылка на сгенерированный отчет, если таковой имеется

'Verbose'

В дополнение к сообщениям, показанным в 'Info' отображаются режимы, состояние генерации кода и целевые сообщения журнала сборки.

Режим верификации кода, заданный как одно из значений в этой таблице.

ЗначениеОписание
'None'Нормальное выполнение
'SIL'Выполнение программы в цикле (SIL)
'PIL'Выполнение процессора в цикле (PIL)

Смотрите раздел Верификации кода Через программное обеспечение-в Цикл и Процессор-в Цикла Выполнения (Embedded Coder).

Примеры

свернуть все

Написать функцию MATLAB, из которой можно сгенерировать код. Этот пример использует функцию myadd который возвращает сумму его входов.

function c = myadd(a,b)
c = a + b;
end

Создайте объект строения для генерации автономного кода C/C + + (статическая библиотека, динамически связанная библиотека или исполняемая программа). Например, создайте объект строения для генерации статической библиотеки.

cfg = coder.config('lib');

Если установлен встраиваемый кодер, coder.config создает coder.EmbeddedCodeConfig объект.

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

cfg.CommentStyle = 'Single-line';

The CommentStyle свойство доступно только в объекте строения Embedded Coder.

Сгенерируйте код при помощи codegen. Передайте объект строения в codegen при помощи -config опция. Задайте, что входные параметры скаляра двойные.

codegen myadd -config cfg -args {1 1} -report

Альтернативная функциональность

Чтобы использовать параметры конфигурации по умолчанию для типов сборки 'LIB', 'DLL', или 'EXE', используйте codegen опция -config:lib, -config:dll, или -config:exe, соответственно. Затем вы не должны создавать и передавать объект строения codegen.

Вопросы совместимости

расширить все

Изменение поведения в будущем релизе

Изменение поведения в будущем релизе

Введенный в R2011a