主要内容

coder.screener

确定函数是否适合代码生成

描述

例子

coder.screener (fcn分析了MATLAB的入口点®函数fcn将不支持的函数和语言特性识别金宝app为代码生成遵从性问题。代码生成遵从性问题显示在准备报告中。

如果fcn直接或间接调用其他不是MathWorks的函数®函数(MATLAB内置函数和工具箱函数),coder.screener分析这些函数。它不分析MathWorks函数。

有可能coder.screener不检测所有代码生成问题。在某些情况下,有可能coder.screener报告错误。

为了避免未被检测到的代码生成问题和错误,在生成代码之前,请通过执行以下附加检查来验证您的MATLAB代码是否适合代码生成:

  • 使用前coder.screener,修复代码分析器识别的问题。

  • 在使用coder.screener,在生成C/ c++代码之前,通过生成和验证MEX函数来验证您的MATLAB代码是否适合代码生成。

coder.screener函数不会报告代码生成器视为外部函数的函数。这样的函数的例子是情节disp,数字.看到使用MATLAB引擎在生成的代码中执行函数调用

coder.screener (fcn, gpu)分析了MATLAB函数的入口点fcn识别GPU代码生成中不支持的金宝app函数和语言特性。此选项需要GPU Coder™许可证。

例子

coder.screener (fcn_1,…,fcn_n分析了MATLAB的多个入口函数。

例子

全部折叠

coder.screener函数标识对不支持代码生成的函数的调用。金宝app它检查入口点函数,foo1,函数为,foo2,这foo1调用。

写函数foo2并保存在文件中foo2.m

函数[tf1,tf2] = foo2(源,目标)G =有向图(源,目标);tf1 = hascycles(G);tf2 = isdag(G);结束

写函数foo1调用foo2.保存foo1在文件中foo1.m

函数[tf1,tf2] = foo1(源,目标)assert(numel(源)==numel(目标))[tf1,tf2] = foo2(源,目标);结束

分析foo1

coder.screener (“foo1”

代码生成准备情况报告显示了不支持的MATLAB函数调用的摘要。金宝app这份报告总结TAB表示foo2.m对象的调用isdag函数的一次调用hascycles,不支持代码生成。金宝app

在报表中,单击代码结构选项卡,并选择MATLAB函数显示复选框。

此选项卡显示一个饼图,显示每个文件的相对大小以及每个文件对代码生成的适合程度。报告显示:

  • 绿色:功能(foo1.m),适用于代码生成。

  • 黄色:功能(foo2.m)要求作出重大改变。

该报告还显示了调用树代码生成准备程度评分.评分以1-5分为基础。“1”表示需要重大修改。5表示代码生成准备工具没有检测到问题。在本例中,报告分配foo1.m代码生成准备程度为4分foo2.m3分。

这个函数foo2调用两个不支持的MATL金宝appAB函数。若要生成MEX函数,请修改代码以调用hascycles而且isdag外部通过使用coder.extrinsic(MATLAB编码器)指令,然后重新运行代码生成准备工具。

函数[tf1,tf2] = foo2(源,目标)code .extrinsic(“hascycles”“isdag”);G =有向图(源,目标);tf1 = hascycles(G);tf2 = isdag(G);结束

重新运行coder.screener关于入口点函数foo1

coder.screener (“foo1”

该报告不再标记代码生成不支持金宝apphascycles而且isdag功能。生成的MEX函数时foo1时,代码生成器将这两个函数分派到MATLAB中执行。

coder.screener函数标识代码生成不支持的MATLAB数据类型。金宝app

写函数myfun1其中包含MATLAB日历持续时间数组数据类型。

函数= myfun1(A) out = calyears(A);结束

分析myfun1

coder.screener (“myfun1”);

代码生成准备情况报告表明calyears代码生成不支持数据类型。金宝app

报告指定myfun1代码生成准备程度得分为3..在生成代码之前,修复报告的问题。

输入参数

全部折叠

MATLAB函数分析的入口点名称。指定为字符向量或字符串标量。

例子:coder.screener(“myfun”);

数据类型:字符|字符串

用于分析的入口点MATLAB函数名的逗号分隔列表。指定为字符向量或字符串标量。

例子:coder.screener(“myfun1”、“myfun2”);

数据类型:字符|字符串

在R2012b中引入