主要内容

coder.screener

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

描述

例子

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

如果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代码生成中不支持的函数和语言特性。

例子

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

例子

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

例子

全部折叠

coder.screener函数标识对代码生成不支持的函数的调用。它检查入口点函数,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函数调用的摘要。这份报告问题选项卡显示,foo2.m对象的一个调用isdag函数和一个调用hascycles,这些代码生成不支持。

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

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

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

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

coder.screener (“foo1”

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

你可以致电coder.screener函数带有可选输出参数。如果使用此语法,则coder.screener函数返回一个编码器。ScreenerInfo对象,该对象包含MATLAB代码库的代码生成准备性分析结果。看到编码器。ScreenerInfo属性

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

信息= coder.screener (“foo1.m”
properties: Files: [2×1 coder. info = screeninfo。消息:[2×1 coder.]UnsupportedCalls: [2×1 coder.]查看筛选器报告

要访问关于第一个不支持的调用的信息,请索引到UnsupportedCalls财产,

firstCall = info.UnsupportedCalls (1)
文件:[1×1 coder. firstCall = CallSite属性:CalleeName: 'hascycles'StartIndex: 78 EndIndex: 86

查看包含此不支持的调用的文件的文本hascycles

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

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

reportString = textReport(信息)
reportString = '代码生成就绪(文本报告)======================================= 2代码生成就绪问题2不支持的函数2已分析的文件配置=============语言:C/ c++ (MATLAB Coder)代码生成问题======================不支持的函数:有向图(2)- foo2。m(行3)- foo2。m(4号线)’

coder.screener函数确定代码生成不支持的MATLAB数据类型。

编写的函数myfun1它包含MATLAB日历持续时间数组数据类型。

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

分析myfun1

coder.screener (“myfun1”);

代码生成就绪报告表明calyears代码生成不支持数据类型。在生成代码之前,请修复报告的问题。

输入参数

全部折叠

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

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

数据类型:字符|字符串

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

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

数据类型:字符|字符串

版本历史

介绍了R2012b

Baidu
map