exponenta event banner

кодер. 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 не поддерживает обратные вызовы TLC.

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

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

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

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

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

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

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

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

  • 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

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, не удалось создать код.

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

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

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

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

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

false

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

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

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

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

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

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

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

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

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

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

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

СтоимостьОписание
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 + +. См. раздел Включение сгенерированного кода с использованием примера основной функции.

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

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

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

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

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

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

  • Если 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Созданный код передает структуры по значению.

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

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

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

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

См. раздел Настройка процесса построения.

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

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

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

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

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

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

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

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

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

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

'UserNames'

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

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

'All'

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

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

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

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

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

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

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

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

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

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

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

true

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

Программное обеспечение для создания отчетов об ошибках использует fprintf для записи сообщений об ошибках в stderr. Он использует abort для завершения работы приложения. Если fprintf и abort недоступны, их необходимо предоставить. 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++ генератор кода переносит код 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' режим, состояние генерации кода и сообщения целевого журнала построения.

Примеры

свернуть все

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