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 функция не сообщает о функциях, которые генератор кода обрабатывает как значение внешних параметров. Примеры таких функций plotdisp, и figure. Смотрите используют MATLAB Engine, чтобы выполнить вызов функции в сгенерированном коде.

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

пример

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

Примеры

свернуть все

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

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

function [tf1,tf2] = foo2(source,target)
G = digraph(source,target);
tf1 = hascycles(G);
tf2 = isdag(G);
end

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

function [tf1,tf2] = foo1(source,target)
assert(numel(source)==numel(target))
[tf1,tf2] = foo2(source,target);
end

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

coder.screener('foo1')

Отчет Готовности Генерации кода отображает сводные данные неподдерживаемых вызовов функции MATLAB. Отчет вкладка Summary указывает на тот foo2.m содержит один вызов isdag функционируйте и один вызов hascycles, которые не поддерживаются для генерации кода.

В отчете кликните по вкладке 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-функцию, измените код, чтобы выполнить вызовы к hascycles и isdag значение внешних параметров при помощи coder.extrinsic (MATLAB Coder) директива, и затем повторно выполненный инструмент готовности генерации кода.

function [tf1,tf2] = foo2(source,target)
coder.extrinsic('hascycles','isdag');
G = digraph(source,target);
tf1 = hascycles(G);
tf2 = isdag(G);
end

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

coder.screener('foo1')

Отчет больше не отмечает ту генерацию кода, не поддерживает hascycles и isdag функции. Когда вы генерируете 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

Представленный в R2012b