主要内容

buildInstrumentedMex

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

描述

例子

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

例子

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

例子

全部崩溃

创建一个被检测的MEX函数。运行测试台,然后查看记录的结果。

创建一个临时目录,然后从Fixed-Point Designer™导入一个示例函数。

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

定义原型输入参数。

n=128;x=复数(零(n,1));W=编码器常数(fidemo.fi_radix2twidles(n));

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

请注意

喜欢fiaccelbuildInstrumentedMex生成一个MEX函数。要生成C代码,请参见MATLAB编码器codegen(MATLAB编码器)函数。

buildInstrumentedMex测试FFT- otestfft_instrumented...arg游戏{x,W}柱状图

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

i=1:20 y=testfft_仪器化(randn(尺寸(x));终止显示仪器结果testfft_instrumented

通过单击查看变量的直方图变量标签。

有关该图的信息,请参阅数字打字机参考页面。

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

clearInstrumentationResultstestfft_instrumented

清除MEX函数,然后删除临时文件。

清晰的testfft_instrumented; tempdirObj.cleanUp;

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

作用日元= ep1 (u)% # codegeny1=u;终止
作用y2=ep2(u,v)% # codegeny = 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=共享的dmex(“ep2”, u, v);

显示检测结果。

显示仪器结果sharedmex

请注意

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

输入参数

全部崩溃

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

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

arg游戏输入示例

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

编码器

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

配置config_object

根据指定MEX生成参数config_object,定义为一个MATLAB变量,使用coder.mexconfig. 例如:

cfg=coder.mexconfig;

-dout_folder

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

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

fiaccel/墨西哥人/fcn

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

该函数不支持文件夹名称中的以下字符:金宝app)、问号()、美元($)和英镑().

-g

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

全球全球价值观

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

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

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

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

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

-发射报告

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

- ooutput_file_name

使用基名生成MEX函数output_file_name加上特定于平台的扩展。

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

如果未指定输出文件名,则基名称为fcn_mex,它允许您运行原始MATLAB函数和MEX函数并比较结果。

-Ooptimization_option

根据的值优化生成的MEX代码optimization_option

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

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

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

-报告

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

提示

  • 您不能使用软件提供的MATLAB函数。如果顶级函数是这样一个MATLAB函数,则不会记录任何内容。您也不能插入脚本。

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

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

    函数A=topfun(A)N=numel(A);对于i=1:na(i)=子函数(A,i);结束函数b=subfun(A,i)b=0.5*A(i);结束函数A=topfun(A)N=numel(A);对于i=1:na(i)=子函数(A(i));结束函数b=subfun(A)b=0.5*A;结束

在R2011b中引入