buildInstrumentedMex

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

描述

例子

buildInstrumentedMexFCN-GydF4y2Ba选项将MATLAB®文件FCN.m到一个MEX函数,并启用工具来记录所有已命名变量和中间变量的最小值和最大值。可选地,您可以启用所有命名值、中间值和表达式值的log2直方图检测。的一般语法和选项buildInstrumentedMexfiaccel是相同的,不同之处buildIntstrumentedMex没有fi对象限制并支承万博1manbetx“编码器”选项。

例子

buildInstrumentedMexFCN_1……FCN_n”- - - - - -选项编码器在翻译功能的MATLABfcn_1通过fcn_n到一个MEX函数,并启用工具来记录所有已命名变量和中间变量的最小值和最大值。为多个入口点函数生成一个MEX函数需要“编码器”选项。

例子

全部收缩

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

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

tempdirObj = fidemo.fiTempdir(“buildInstrumentedMex”)的CopyFile(完整文件(matlabroot,'工具箱',“定点”,...“fidemos”,“fi_m_radix2fft_withscaling.m”...'testfft.m','F')

定义原型输入参数。

N = 128;X =络合物(零(N,1));W = coder.Constant(fidemo.fi_radix2twiddles(N));

生成的仪表MEX功能。使用-o指定MEX函数名的选项。使用柱状图选项来计算直方图。(如果你有一个MATLAB编码器™许可,您可能还希望添加编码器选项。在这种情况下,使用buildInstrumentedMex testfft -coder -o testfft_instrumented -args {X,W}代替下面的代码行。)

请注意

喜欢fiaccel,buildInstrumentedMex生成MEX函数。生成C代码,请参见MATLAB编码器codegen函数。

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

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

I = 1:20 Y = testfft_instrumented(randn(尺寸(X)));结束showInstrumentationResultstestfft_instrumented

查看直方图通过点击一个变量在里面变量标签。

有关人物信息,请参阅NumericTypeScope参考页。

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

clearInstrumentationResultstestfft_instrumented;

清除MEX功能,然后删除临时文件。

明确testfft_instrumented;tempdirObj.cleanUp;

在一个本地可写文件夹中,创建函数ep1.mep2.m.

功能Y1 = EP1(u)的% # codegenY1 = U;结束
功能Y2 = EP2(U,V)% # codegenY2 = U + V;结束

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

u = 1:10 0;v = 5:104;buildInstrumentedMex-osharedmex...EP1arg游戏{你}...%进入点1EP2arg游戏{U,V}...%进入点2柱状图编码器

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

日元= 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限制并允许完整的代码生成支持。万博1manbetx你必须有一个MATLAB编码器使用此选项的许可。

配置config_object

指定MEX生成参数的基础上,config_object,其定义为使用MATLAB可变coder.mexconfig.例如:

CFG = coder.mexconfig;

-dout_folder

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

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

fiaccel/MEX/FCN.

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

该功能不支持以下字符的文件夹名称:星号(万博1manbetx*),问号(?),美元($)和英镑(#)。

-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一旦保持不变,无论大小一个.这个函数调用subfunN次,并由此执行的总时间成正比N.但是,当插装时,执行的时间subfun一旦成为成正比N^ 2。发生这种变化是因为最小和最大数据是在整个数组中计算的。当一个大,计算可导致显著的性能下降。因此,只要有可能,就应该该功能实际上需要仅传递数据。

    函数A = topfun(A)N = numel(A);对于i = 1:N A(ⅰ)= subfun(A,I);端结束函数b = subfun(A,I)B = 0.5 * A(I);端函数A = topfun(A)N = numel(A);对于i = 1:N A(ⅰ)= subfun(A(I));端结束函数b = subfun(A)B = 0.5 * A;结束

介绍了在R2011b