coder.CodeConfig

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

Описание

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

Создание

Описание

пример

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

cfg = coder.config(build_type, 'ecoder', false) создает coder.CodeConfig объект для заданного типа выхода, даже если установлен Embedded Coder.

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

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

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

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

Свойства

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

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

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

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

'Faster Runs'

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

'Debug'

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

'Specify'

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

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

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

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

'Auto'

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

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

'MathWorks'

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

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

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

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

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

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

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

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

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

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

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

  • TargetLang

  • TargetLangStandard

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

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

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

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

Примечание

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

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

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

Смотрите Оптимизации MATLAB 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».

Класс коллбэка для вызовов библиотеки 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), вне любой функции. Задайте код как вектор символов.

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

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

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

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

  • 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

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, генерация кода прекращает работать.

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

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

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

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

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

false

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

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

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

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

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

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

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

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

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

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

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

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

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

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

true

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

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

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

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

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

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

Пример генерации основного файла 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 свойство, установленное на нем, этот параметр возвращается к значению по умолчанию. Значение по умолчанию [].

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

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

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

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

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

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

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

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

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

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

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

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

ЗначениеОписание
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 + + обрезает экспортированный идентификатор.

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

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

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

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

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

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

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

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

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

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

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

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

true

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

См. «Повторный код». Эта опция не поддерживается продуктом GPU Coder™.

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

'UserNames'

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

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

'All'

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

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

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

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

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

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

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

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

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

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

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

true

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

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

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

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

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

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

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

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

false

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

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

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

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

Примеры

свернуть все

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

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

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

cfg = coder.config('lib');

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

cfg.RuntimeChecks = true;

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

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

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

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

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

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

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

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

Введенный в R2011a