主要内容

buildInstrumentedMex

生成编译后的C代码函数,包括日志工具

描述

例子

buildInstrumentedMexfcn- gydF4y2Ba选项翻译MATLAB®文件fcn.m到MEX函数,并支持记录所有命名变量和中间变量的最小值和最大值的检测。您可以选择为所有命名、中间和表达式值的log2直方图启用插装。的一般语法和选项buildInstrumentedMex而且fiaccel是一样的,除了buildIntstrumentedMex没有fi对象的限制和支持金宝app“编码器”选择。

例子

buildInstrumentedMexfcn_1……fcn_n”- - - - - -选项编码器翻译MATLAB函数fcn_1通过fcn_n到MEX函数,并支持记录所有命名变量和中间变量的最小值和最大值的检测。为多个入口点函数生成MEX函数需要“编码器”选择。

例子

全部折叠

创建一个仪表化的MEX函数。运行测试台架,然后查看记录的结果。

创建一个临时目录,然后从定点设计器™导入一个示例函数。

tempdirObj = fidemo.fiTempdir (“buildInstrumentedMex”)复制文件(fullfile (matlabroot,“工具箱”“定点”...“fidemos”“fi_m_radix2fft_withscaling.m”),...“testfft.m”“f”

定义原型输入参数。

N = 128;X =复数(0 (n,1));W = code . constant (fidemoo .fi_radix2twiddles(n));

生成一个仪表化的MEX函数。使用- o选项指定MEX函数名。使用柱状图选项计算直方图。(如果你有一个MATLAB编码器™许可证,您可能还想添加编码器选择。在这种情况下,使用buildInstrumentedMex testfft -coder -o testfft_instrumentation -args {x,W}而不是下面的代码行。)

请注意

就像fiaccelbuildInstrumentedMex生成MEX函数。要生成C代码,请参阅MATLAB编码器codegen(MATLAB编码器)函数。

buildInstrumentedMextestfft- otestfft_instrumented...arg游戏{x, W}柱状图

运行一个测试文件来记录检测结果。调用showInstrumentationResults打开报告。通过在报告中的一个变量上暂停,查看模拟最小值和最大值以及整数状态。您还可以在表中看到双精度数字的建议数据类型。

I =1:20 y = testfft_instrumentation (randn(size(x)));结束showInstrumentationResultstestfft_instrumented

单击,查看变量的直方图变量选项卡。

有关该图的信息,请参阅NumericTypeScope参考页面。

关闭直方图显示,然后清除结果日志。

clearInstrumentationResultstestfft_instrumented

先清空MEX功能,再删除临时文件。

清晰的testfft_instrumented;tempdirObj.cleanUp;

在本地可写文件夹中,创建函数ep1.m而且ep2.m

函数Y1 = ep1(u)% # codegenY1 = u;结束
函数Y2 = ep2(u, v)% # codegenY2 = u + v;结束

为两个入口点函数生成一个仪表化的MEX函数。使用- o选项指定MEX函数的名称。使用柱状图选项计算直方图。使用编码器方法生成多个入口点buildInstrumentedMex函数。

U = 1:100;V = 5:104;buildInstrumentedMex- osharedmex...ep1arg游戏{你}...%入口点1ep2arg游戏{u, v}...%入口点2柱状图编码器

使用生成的MEX函数调用第一个入口点函数。

y = sharedmex(“ep1”u);

使用生成的MEX函数调用第二个入口点函数。

Y2 = sharedmex(“ep2”, u, v);

显示检测结果。

showInstrumentationResultssharedmex

请注意

方法为多个入口点函数生成MEX函数buildInstrumentedMex函数需要MATLAB编码器许可证。

输入参数

全部折叠

要测量的MATLAB入口点函数,指定为存在于当前工作文件夹或路径上的函数。入口点函数必须适合于代码生成。有关更多信息,请参见使MATLAB代码适合于代码生成(MATLAB编码器)

编译器选项的选择。buildInstrumentedMex优先使用单个命令行选项,而不是使用配置对象指定的选项。如果命令行选项冲突,则最右边的选项优先。

arg游戏example_inputs

定义所有MATLAB函数输入的大小、类和复杂度。使用中的值example_inputs来定义这些属性。example_inputs必须是一个单元格数组,指定与MATLAB函数相同的输入数量和顺序。

编码器

使用MATLAB编码器软件来编译MEX文件,而不是默认的定点设计器fiaccel函数。此选项将删除fiaccel限制和允许完整的代码生成支持。金宝app你必须有一个MATLAB编码器使用此选项的许可证。

配置config_object

指定MEX生成参数,基于config_object,定义为MATLAB变量使用coder.mexconfig.例如:

CFG = code .mexconfig;

- dout_folder

将生成的文件存储在指定的绝对路径或相对路径中out_folder.如果指定的文件夹out_folder不存在,buildInstrumentedMex为您创建它。

如果不指定文件夹位置,buildInstrumentedMex在默认文件夹中生成文件:

fiaccel/墨西哥人/fcn

fcn是在命令行中指定的MATLAB函数的名称。

该函数不支持文件夹名称中包含以下字符:星号(金宝app),问号(?)、dollar($)和pound ().

- g

在调试模式下编译MEX函数,并关闭优化。如果没有指定,buildinstrumentedMex生成优化模式下的MEX函数。

全球global_values

在MATLAB文件中指定全局变量的初始值。使用单元格数组中的值global_values来初始化编译函数中的全局变量。单元格数组应该提供每个全局变量的名称和初始值。编译前必须初始化全局变量buildInstrumentedMex.方法未为全局变量提供初始值全球选项,buildInstrumentedMex在MATLAB全局工作空间中检查变量。如果不提供初始值,buildInstrumentedMex产生一个错误。

生成的MEX代码和MATLAB都有各自的全局数据副本。为了确保一致性,必须在两者交互时同步它们的全局数据。如果不同步数据,它们的全局变量可能会不同。

柱状图 计算所有命名值、中间值和表达式值的log2直方图。一个直方图列出现在代码生成报表表中。
-我包含路径

添加包含路径到代码生成路径的开始。

buildInstrumentedMex搜索代码生成路径第一个当MATLAB代码转换为MEX代码时。

-launchreport

生成并打开代码生成报告。如果不指定此选项,buildInstrumentedMex仅在出现错误或警告消息或指定报告选择。

- ooutput_file_name

生成带有基名的MEX函数output_file_name加上一个特定于平台的扩展。

output_file_name可以是文件名,也可以包含现有路径。

如果不指定输出文件名,则基文件名为fcn_mex,它可以让你运行原始的MATLAB函数和MEX函数,并比较结果。

- ooptimization_option

的值优化生成的MEX代码optimization_option

  • 启用:内联-启用函数内联

  • 禁用:内联—禁用功能内联

如果没有指定,buildInstrumentedMex使用内联进行优化。

报告

生成一个代码生成报告。如果不指定此选项,buildInstrumentedMex仅在出现错误或警告消息或指定-launchreport选择。

提示

  • 你不能仪表MATLAB函数提供的软件。如果顶层函数是这样一个MATLAB函数,则不会记录任何内容。您也不能工具脚本。

  • 每次调用已检测的MEX函数时,都会累积检测结果。使用clearInstrumentationResults清除日志中以前的结果。

  • 有些编码模式传递大量数据,但只使用其中的一小部分。在这种情况下,使用时可能会看到性能下降buildInstrumentedMex.按照下面的模式,subfun只使用输入数组的一个元素,一个.对于正常执行,表示执行的时间subfun无论大小,Once保持不变一个.这个函数调用subfunN次数,因此是执行的总时间正比于N.然而,当仪器化时,执行的时间subfun一旦成正比N^ 2。发生这种变化是因为在整个数组中计算最小和最大数据。当一个较大时,计算会导致显著的性能下降。因此,只要可能,您应该只传递函数实际需要的数据。

    函数A = topfun(A) N = numel(A);for i=1: A(i) = subfun(A,i);end end函数b = subfun(A,i) b = 0.5 * A(i);结束函数A = topfun(A) N = numel(A);for i=1: A(i) = subfun(A(i));结束结束函数b = subfun(a) b = 0.5 * a;结束

在R2011b中介绍