coder.screener

Определите, подходит ли функция для генерации кода

Описание

пример

coder.screener(fcn) анализирует точку входа MATLAB® функциональные fcn идентифицировать неподдерживаемые функции и языковые функции как проблемы податливости генерации кода. Проблемы податливости генерации кода отображаются в отчете о готовности.

Если fcn вызывает другие функции прямо или косвенно, которые не являются MathWorks® функции (встроенные функции MATLAB и функции тулбокса), coder.screener анализирует эти функции. Он не анализирует функции MathWorks.

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

Чтобы избежать необнаруженных проблем генерации кода и ложных ошибок, перед генерацией кода проверьте, что ваш код MATLAB подходит для генерации кода, выполнив эти дополнительные проверки:

  • Перед использованием coder.screener, устраните проблемы, которые идентифицирует анализатор кода.

  • После использования coder.screenerи перед генерацией кода C/C + + проверьте, что ваш код MATLAB подходит для генерации кода путем генерации и верификации MEX-функции.

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

coder.screener(fcn,'-gpu') анализирует функцию MATLAB точки входа fcn идентифицировать неподдерживаемые функции и языковые функции для генерации кода GPU. Для этой опции требуется лицензия GPU Coder™.

пример

coder.screener(fcn_1,...,fcn_n) анализирует несколько функций MATLAB точки входа.

Примеры

свернуть все

coder.screener функция определяет вызовы функций, которые не поддерживаются для генерации кода. Он проверяет функцию точки входа, foo1, и функции, foo2, что foo1 вызовы.

Напишите функцию foo2 и сохраните его в файле foo2.m.

function tf = foo2(source,target)
G = digraph(source,target);
tf = isdag(G);
end

Напишите функцию foo1 который вызывает foo2. Сохранить foo1 в файле foo1.m.

function tf = foo1(source,target)
assert(numel(source)==numel(target))
tf = foo2(source,target);
end

Проанализировать foo1.

coder.screener('foo1')

Отчет «Готовность генерации кода» содержит сводные данные вызовов функций MATLAB, которые не поддерживаются. Вкладка Summary отчета указывает, что foo2.m содержит один вызов на digraph функцию и один вызов isdag функции, которые не поддерживаются для генерации кода.

В отчете щелкните вкладку Code Structure и установите флажок Show MATLAB functions.

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

  • Зеленый: Функция (foo1.m) подходит для генерации кода.

  • Желтый: Функция (foo2.m) требует существенных изменений.

В отчете также отображается Call Tree с Code Generation Readiness Score. Счет составлен по шкале 1-5. 1 указывает, что требуются значительные изменения. 5 указывает, что инструмент готовности генерации кода не обнаруживает проблем. В этом примере отчет присваивает foo1.m Счет готовности генерации кода 4 и foo2.m а счет из 3.

Функция foo2 вызывает две неподдерживаемые функции MATLAB. Чтобы сгенерировать MEX-функцию, измените код, чтобы выполнить вызовы digraph и isdag extinsic при помощи coder.extrinsic директива, а затем перезапустите инструмент готовности генерации кода.

function tf = foo2(source,target)
coder.extrinsic('digraph','isdag');
G = digraph(source,target);
tf = isdag(G);
end

Запущенный повторно coder.screener о функции точки входа foo1.

coder.screener('foo1')

Отчет больше не помечает, что генерация кода не поддерживает digraph и dag функций. Когда вы генерируете MEX-функцию для foo1генератор кода отправляет эти две функции в MATLAB для выполнения.

coder.screener функция определяет типы данных MATLAB, которые не поддерживаются генерацией кода.

Напишите функцию myfun1 который содержит тип данных массива календарной длительности MATLAB.

function out = myfun1(A)
out = calyears(A);
end

Проанализировать myfun1.

coder.screener('myfun1');

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

Отчет присваивает myfun1 Счет готовности генерации кода 3. Перед генерацией кода исправьте сообщенные проблемы.

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

свернуть все

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

Пример: coder.screener('myfun');

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

Разделенный запятыми список имен функций MATLAB точки входа для анализа. Задайте как векторы символов или строковые скаляры.

Пример: coder.screener('myfun1','myfun2');

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

Ограничения

  • coder.screener функция не поддерживается в Online™ MATLAB.

Введенный в R2012b