exponenta event banner

кодер. EmbeddedCodeConfig

Параметры конфигурации для генерации кода C/C + + из кода MATLAB с встроенным кодером

Описание

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;
}

См. раздел Командные записи типа управляющих данных в сгенерированном коде (встроенный кодер).

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

СтоимостьОписание
'Generate'

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

Создает clang-format файл для сборки на основе настроек конфигурации. 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 (встроенный кодер).

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

СтоимостьОписание
'Clang-format'

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

'Auto'

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

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

'MathWorks'

Вызывает возврат генератора кода к инструменту форматирования MathWorks.

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

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

СтоимостьОписание
'None'

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

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

Библиотека замены именованного кода

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

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

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

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

Совместимые библиотеки зависят от следующих параметров:

  • TargetLang

  • TargetLangStandard

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

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

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

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

Примечание

Программное обеспечение кодера MATLAB не поддерживает обратные вызовы TLC.

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

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

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

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

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

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

См. раздел Определение стиля комментария для кода C/C + + (встроенный кодер).

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

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

См. раздел Оптимизация кодера MATLAB в разделе Сгенерированный код.

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

СтоимостьОписание
false

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

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

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

См. раздел Управление стилем кода C (встроенный кодер).

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

См. раздел Создание кода C++ с интерфейсом класса.

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

См. раздел Создание кода C++ с интерфейсом класса.

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

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

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

СтоимостьОписание
true

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

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

false

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

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

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

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

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

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

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

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

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

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

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

  • Настройка 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 (встроенный кодер).

Класс обратного вызова для вызовов библиотеки 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'};

Символьный вектор

Отдельные папки включения по 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), вне любой функции. Укажите код в качестве символьного вектора.

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

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

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

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

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

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

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

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

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

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

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

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

  • 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 содержит параметры, специфичные для генерации кода C++ для глубокого обучения с помощью Intel ® MKL-DNN. Создание coder.MklDNNConfig объект, использование coder.DeepLearningConfig. Например:

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

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

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

Для создания кода для сетей глубокого обучения требуется пакет поддержки Deep Learning Toolbox™ и интерфейс кодера MATLAB для библиотек глубокого обучения.

См. разделы Создание кода для сетей глубокого обучения с MKL-DNN и Создание кода для сетей глубокого обучения с вычислительной библиотекой ARM.

Зависимость: Если 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 для выполнения вызова функции в сгенерированном коде.

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

СтоимостьОписание
false

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

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

true

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

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

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

СтоимостьОписание
false

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

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

true

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

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

СтоимостьОписание
true

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

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

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;

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

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

См. раздел Управление подписанными сдвигами влево в сгенерированном коде (встроенный кодер).

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

СтоимостьОписание
true

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

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

i >>= 3

false

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

i = asr_s32(i, 3U);

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

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

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

СтоимостьОписание
false

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

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

true

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

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

СтоимостьОписание
true

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

Отчет о создании кода включает отслеживание кода. См. раздел Интерактивная трассировка между кодом MATLAB и сгенерированным кодом C/C + + (встроенный кодер).

false

Отчет о создании кода не включает отслеживание кода.

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

СтоимостьОписание
true

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

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

false

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

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

  • Позволяет Dynamic memory allocation.

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

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

СтоимостьОписание
'MapMFileToCFile'

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

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

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

См. раздел Как генерируется код разделов кодера MATLAB.

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

СтоимостьОписание
false

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

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

true

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

Чтобы открыть отчет по метрикам кода, щелкните ссылку Метрики кода (Code Metrics) на вкладке Сводка (Summary) отчета по созданию кода.

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

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

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

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

СтоимостьОписание
false

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

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

true

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

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

СтоимостьОписание
false

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

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

true

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

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

СтоимостьОписание
true

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

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

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

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

СтоимостьОписание
false

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

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

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

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

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

СтоимостьОписание
'GenerateCodeOnly'

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

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

'DoNotGenerate'

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

'GenerateCodeAndCompile'

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

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

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

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

СтоимостьОписание
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 в командной строке (встроенный кодер).

Объект реализации аппаратного обеспечения, определяющий специфичные для аппаратного обеспечения параметры конфигурации для генерации кода 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 + +. При наличии Designer™ Fixed-Point отчет также выделяет выражения в коде MATLAB, которые приводят к дорогостоящим операциям с фиксированной точкой в сгенерированном коде.

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

СтоимостьОписание
true

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

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

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

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

СтоимостьОписание
true

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

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

false

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

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

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

СтоимостьОписание
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 для определения необходимости использования оптимизации. См. раздел Оптимизация memset.

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-loop, a coder.unroll директива, размещенная непосредственно перед циклом, имеет приоритет над оптимизацией развертывания цикла. Порог также может применяться к некоторым for- циклы, создаваемые во время генерации кода.

См. раздел Разматывание контуров.

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

СтоимостьОписание
true

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

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

false

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

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

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

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

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

СтоимостьОписание
false

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

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

true

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

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

Генератор кода также включает сигнатуру функции 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. Эта переменная содержит информацию о параметрах генерации кода, входных файлах, созданных файлах и сообщениях генерации кода.

См. раздел Программно и кодировщик информации о создании отчетов по коду доступа. Свойства EventInfo.

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

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

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

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

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

СтоимостьОписание
Массивы строк

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

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

Массив ячеек символьных векторов в ReservedNameArray. Например, cfg.ReservedNameArray = {'reserve1','reserve2','reserve3'}.

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

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

Примечание

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

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

СтоимостьОписание
false

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

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

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

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

СтоимостьОписание
true

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

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

false

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

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

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

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

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

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

СтоимостьОписание
false

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

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

true

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

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

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

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

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

СтоимостьОписание
true

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

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

false

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

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

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

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

СтоимостьОписание
false

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

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

true

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

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

  • В ОС Windows ® отладчик Microsoft ® Visual C++ ®.

  • В Linux ® отладчик GNU ® Data Display Debugger (DDD).

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

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

СтоимостьОписание
true

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

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

false

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

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

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

Режим глобальной синхронизации данных для выполнения 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 путем отключения постоянной проверки ввода и глобальной синхронизации данных (встроенный кодер)

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

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

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

СтоимостьОписание
true

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

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

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

false

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

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

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

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

'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' при успешном создании кода отображаются следующие дополнительные сообщения:

  • Code generation successful

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

'Verbose'

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

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

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

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

Примеры

свернуть все

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

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