coder.MexCodeConfig

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

Описание

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

Создание

Описание

пример

cfg = coder.config('mex') создает coder.MexCodeConfig объект.

cfg = coder.config создает coder.MexCodeConfig объект.

Свойства

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

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

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

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

'Auto'

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

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

'MathWorks'

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

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

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

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

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

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

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

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

Вы можете вызвать MEX-функцию и исходную функцию MATLAB с теми же аргументами. Поэтому можно использовать один и тот же тестовый файл для обеих функций.

Проверка значений может замедлить выполнение MEX-функции.

'IgnoreValues'

Когда вы вызываете MEX-функцию, она игнорирует значение, которое вы обеспечиваете для постоянного входного параметра. Он использует значение, заданное во время генерации кода.

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

'Remove'

Генератор кода удаляет постоянные входные параметры из сигнатуры MEX-функции. Когда вы вызываете MEX-функцию, вы не задаете значение для постоянного входного параметра.

Эта опция обеспечивает обратную совместимость.

См. раздел «Постоянная проверка входных параметров» в MEX-функциях».

Будет ли создаваться пространство имен 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

Пользовательский код, который появляется в верхней части каждого файла заголовка 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'];

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

Генерация кода MEX не поддерживается для глубокого обучения с помощью 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' включает этот параметр.

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

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

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

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

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

true

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

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

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

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

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

В MEX-функцию отображаются выход операторов, которые не заканчиваются точкой с запятой.

false

В MEX-функцию не отображается выхода операторов, которые не заканчиваются точкой с запятой.

Это свойство не применяется к общим функциям визуализации, таким как disp, plot, или figure когда они вызываются как внешняя функция. MEX-функции отображают выходы этих функций независимо от наличия точки с запятой или значения EchoExpressions.

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

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

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

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

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

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

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

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

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

Генератор кода не включает режим отладки компилятора C

true

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

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

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

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

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

true

Генератор кода использует единовременную (JIT) технологию компиляции для генерации MEX-функций. Генератор кода создает функцию JIT MEX, которая содержит абстрактное представление кода MATLAB. Когда вы запускаете функцию JIT MEX, MATLAB генерирует исполняемый код в памяти.

Чтобы ускорить генерацию MEX-функций, установите EnableJIT на true.

JIT-компиляция несовместима с определенными функциями и опциями генерации кода, такими как пользовательский код или использование библиотеки OpenMP. Если вы задаете JIT-компиляцию, и генератор кода не может ее использовать, то он генерирует функцию C/C + + MEX с предупреждением. Если EnableJIT и EnableOpenMP являются true, и ваш код использует parforгенератор кода использует JIT-компиляцию и обрабатывает parfor-циклы как for-циклы.

См. «Ускорение генерации MEX при помощи JIT-компиляции».

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

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

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

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

false

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

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

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

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

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

true

Генератор кода включает инструментирование для профилирования в сгенерированную MEX-функцию. Затем можно использовать Профилировщика MATLAB для профилирования MEX. Смотрите MEX-функции профиля при помощи Профилировщика MATLAB.

Параллелизация 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.

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

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

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

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

Для внешней функции генератор кода производит вызов функции MATLAB. Генератор кода не генерирует внутренний код для функции.

false

Генератор кода игнорирует внешнюю функцию. Он не генерирует код для вызова функции MATLAB. Если внешняя функция влияет на выход функции MATLAB, генератор кода выдает ошибку компиляции.

Если вы задаете ExtrinsicCalls на falseсгенерированная MEX-функция не может отображать сообщения во время выполнения от error или assert операторы в коде MATLAB. MEX-функция сообщает, что не может отобразить сообщение об ошибке. Чтобы увидеть сообщение об ошибке, установите ExtrinsicCalls на true и снова сгенерируйте MEX-функцию.

Значение ExtrinsicCalls влияет на то, как MEX-функция генерирует случайные числа для rand, randi, и randn. Если ExtrinsicCalls является true, MEX-функция использует глобальный поток случайных чисел MATLAB, чтобы сгенерировать случайные числа. В противном случае MEX-функция использует автономный генератор случайных чисел.

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

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

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

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

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

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

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

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

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

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

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

true

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

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

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

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

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

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

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

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

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

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

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

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

ЗначениеОписание глобальных данныхОписание постоянных глобальных данных

'SyncAlways' (по умолчанию)

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

Синхронизирует глобальные данные при входе и выходе MEX-функции и для внешних вызовов для максимальной согласованности между MATLAB и сгенерированной MEX-функцией. Чтобы максимизировать эффективность, если внешние вызовы не изменяют глобальные данные, используйте эту опцию с coder.extrinsic -sync:off опция отключения синхронизации для этих вызовов.

Проверяет согласованность постоянных глобальных данных при вводе MEX-функции и после внешних вызовов. Если значения глобальных данных в глобальной рабочей области MATLAB несовместимы с глобальными значениями константы компиляции в MEX-функция, MEX-функция заканчивается с ошибкой. Используйте coder.extrinsic -sync:off опция отключения проверки непротиворечивости после определенных внешних вызовов.

'SyncAtEntryAndExits'

Синхронизирует глобальные данные только при входе и выходе MEX-функции. Чтобы максимизировать эффективность, если только несколько внешних вызовов изменяют глобальные данные, используйте эту опцию с coder.extrinsic -sync:on опция включения синхронизации для этих вызовов.

Проверяет постоянные глобальные данные только при вводе MEX-функции. Если значения глобальных данных в глобальной рабочей области MATLAB несовместимы с глобальными значениями константы компиляции в MEX-функция, MEX-функция заканчивается с ошибкой. Используйте coder.extrinsic -sync:on опция включения проверки непротиворечивости после определенных внешних вызовов.

'NoSync'

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

Отключает проверку согласованности.

См. «Генерация кода для глобальных данных».

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

ЗначениеОписание
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') директива, помещенная в тело функции, переопределяет эту опцию. Для получения дополнительной информации смотрите Взаимодействие между различными элементами управления встраиванием.

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

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

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

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

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

false

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

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

См. Раздел «Проверки во время выполнения системы управления»

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

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

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

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

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

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

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

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

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

true

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

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

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

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

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

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

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

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

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

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

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

Команда для настройки обработки сборки после генерации 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'.

Примечание

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

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

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

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

Можно использовать Ctrl+C, чтобы остановить выполнение сгенерированной MEX-функции.

false

Чтобы закончить длительную MEX-функцию, вам, возможно, придется прекратить работу MATLAB.

См. Раздел «Проверки во время выполнения системы управления»

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

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

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

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

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

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

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

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

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

false

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

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

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

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

См. Раздел «Использование пространства стека управления»

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

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

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

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

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

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

'Info'

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

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

  • Code generation successful

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

'Verbose'

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

Примеры

свернуть все

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

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

Создайте объект строения для генерации MEX-функции.

cfg = coder.config('mex');

Измените значения свойств, для которых вы не хотите использовать значения по умолчанию. Например, включите just-in-time (JIT) компиляцию.

cfg.EnableJIT = true;

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

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

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

Чтобы использовать значения параметров конфигурации по умолчанию для генерации MEX-функции, вместо создания объекта строения можно вызвать codegen без указания объекта строения или с -config:mex опция.

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

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

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

Введенный в R2011a