主要内容

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函数和语言特性。

例子

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

例子

信息= coder.screener (___返回一个编码器。ScreenerInfo对象。该对象的属性包含代码生成就绪性分析结果。使用信息以编程方式访问代码生成准备结果。有关属性列表,请参见编码器。ScreenerInfo属性

例子

全部折叠

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

带有示例代码和分析结果的代码生成准备工具的屏幕截图。

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

函数[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函数的输出参数是可选的。如果使用此语法,则coder.screener函数返回编码器。ScreenerInfo对象,其中包含MATLAB代码库的代码生成就绪性分析的结果。看到编码器。ScreenerInfo属性

本例使用这些文件foo1.m而且foo2.m在前面的示例中定义。调用coder.screener功能:

信息= code .screener(“foo1.m”
info = ScreenerInfo属性:Files: [2×1 coder.]CodeFile]消息:[2×1编码器。Unsupported金宝appCalls: [2×1 coder。]查看筛选器报告

要访问关于第一个不支持调用的信息,请将索引到金宝appUn金宝appsupportedCalls财产,

firstCall = info.Un金宝appsupportedCalls(1)
firstCall = CallSite属性:CalleeName: 'hascycles'文件:[1×1编码器。CodeFile] StartIndex: 78 EndIndex: 86

查看包含此不支持的调用的文件的文本金宝apphascycles

firstCall.File.Text
ans = 'function [tf1,tf2] = foo2(源,目标)G =有向图(源,目标);tf1 = hascycles(G);tf2 = isdag(G);结束的

要将整个代码生成准备情况报告导出到MATLAB字符串,请使用textReport函数。

reportString = textReport(info)
reportString = '代码生成准备(文本报告)======================================= 2代码生成准备问题2不支持的功能2文件分析配置=============语言:C/ c++ (MATLAB Coder)代码生成问题=金宝app=====================不支持的功能:有图(2)- foo2。m (Line 3) - foo2. m (Line 3)m(4号线)’

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

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

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

分析myfun1

coder.screener (“myfun1”);

代码生成准备情况报告表明calyears代码生成不支持数据类型。金宝app在生成代码之前,修复报告的问题。

输入参数

全部折叠

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

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

数据类型:字符|字符串

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

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

数据类型:字符|字符串

版本历史

在R2012b中引入