主要内容

MATLAB算法的算子数估计

这个例子展示了如何在MATLAB中编写的算法中估计算术运算符的数量。分析一个基数2 FFT算法并生成显示操作员使用情况的报告。

RADIX 2 FFT算法和测试台

分析算术运营商的数量soc_analyze_FFT_radix2函数。计算函数执行期间使用的算术运算符的数量。试验台soc_analyze_fft_tb提供刺激并验证基数2 FFT算法的实现(soc_analyze_FFT_radix2)针对MATLAB FFT功能(fft) .

打开soc_analyze_fft_tb.m.MATLAB编辑器中的文件以检查测试台的结构。

打开soc_analyze_fft_tb.

试验台产生具有两个正弦曲线的测试信号,一个处于50Hz的一个处,幅度为0.7,另一个在120Hz,幅度为1.信号具有1kHz的采样频率,具有添加剂随机噪声。测试台计算上述FFT长度的FFT输出,用于指定的FFT长度FFTLEN.论点。测试台将函数的输出与MATLAB FFT函数(fft)并绘制结果。

生成1024点基数2 FFT的操作员计数报告

估计基数2 FFT的运营商数量,使用socFunctionAnalyzer函数,并提供测试台函数soc_analyze_fft_tb.作为一个论点。默认情况下,该函数为从TestBench函数中的所有函数生成报告,并列出所用的所有运算符。

为算法生成报告(soc_analyze_FFT_radix2),而不是用于测试工作台,请使用'限制功能'使用值的名称-值对参数“soc_analyze_FFT_radix2.m”.使用'restrictoperator'名称 - 值对参数过滤报告,并仅通过将其值设置为3个运算符{'添加','minus','mul'}.设定'导出目录'名称值对参数指定生成的报告的文件夹位置。

执行此命令以生成用于模拟1024点基数2 FFT算法的报告。该命令在计算运算符并生成报告时模拟设计。

Socfunctionanalyzer('soc_analyze_fft_tb.m''function input', 1024,......'文件夹''报告_1024'“IncludeFunction”“soc_analyze_FFT_radix2.m”......“IncludeOperator”, {'添加''减'“MUL”});
为/tmp/Bdoc21a_1606923_147414/tp104b2120/ex65369380/soc_analyze_FFT_tb生成操作分析报告。米……报告文件存放在“/tmp/Bdoc21a_1606923_147414/tp104b2120/ex65369380/report_1024”目录下。操作符估计:打开报告查看器完成。

观察到RADIX 2 FFT算法和参考MATLAB FFT功能(fft)的结果如图所示。验证这些结果是非常相似的,这些结果之间的差异是10e-12的顺序。

分析运营商估算报告

点击打开报告打开报告查看器在MATLAB控制台上的链接。或者,您可以使用Socalgorithmanalyzerreport.函数。该报告提供了两种视图。第一个视图是操作符视图,它显示的数据使每一行都对应于一个操作符。要使用此视图,请单击操作视图在报告工具条上。第二个视图是算法视图,其中每一行对应一个MATLAB函数。要使用此视图,请单击算法的观点在报告工具条上。

默认情况下,报告将打开运算符视图。该报告打开每个运算符和数据类型的汇总视图。例如,对于1024点的基数2 FFT,总共有91,649个添加(添加(+))的数据类型和67,094个减法[减(-)]的数据类型int32.要获取每个操作符的详细报告,请展开该操作符。该报告显示了在各种函数中使用的操作符计数。例如,蝴蝶函数l_butterfly包含四个添加每个执行5,120次的添加。通过单击报告的最后一列中的其中一个链接来追踪运算符,以突出显示操作员的位置soc_analyze_FFT_radix2文件。

单击,切换到算法视图算法的观点按钮。展开报告并查看文件下的所有功能的操作员计数soc_analyze_fft_radix2.m..通过展开另一个级别,可以查看每个操作符及其数据类型的计数。你也可以用the全部展开全部折叠Report ToolStrip上的按钮导航报告。要将特定运算符跟踪到MATLAB代码,请单击列中的相应链接链接到源在报告中。

生成512点基数2 FFT报告

为了观察操作次数和FFT中点数之间的相关性,将之前的报告与512点基数2 FFT的报告进行比较。生成512点基数2 FFT的报告,通过传递512的值给'function input'名称 - 值对参数如在此命令中。

Socfunctionanalyzer('soc_analyze_fft_tb.m''function input'512,......'文件夹''报告_512'“IncludeFunction”“soc_analyze_FFT_radix2.m”......“IncludeOperator”, {'添加''减'“MUL”});
为/tmp/Bdoc21a_1606923_147414/tp104b2120/ex65369380/soc_analyze_FFT_tb生成操作分析报告。米……保存在“/tmp/Bdoc21a_1606923_147414/tp104b2120/ex65369380/report_512”目录下。操作符估计:打开报告查看器完成。

对于512点基数2 FFT,聚合报告显示估计的数据类型的41,473个添加数量, 32,026种类型的减法int32和11,316个数据类型的减法.以前,通过1024点基数2 FFT,这些值分别为91,649,70,173和25,146。展开报告以获取详细的操作员使用l_butterfly函数。在这种情况下,该功能对于512长度执行2304次,而1024长度的5120次)。

结论

使用socFunctionAnalyzer用于估计和分析基数2 FFT的MATLAB函数中算术运算符数的函数。使用各种查看器选项来分析报告。

  • 总总观点

  • 详细的每个操作符视图和每个MATLAB函数

通过将不同的参数作为算法的输入并观察差异来分析报告。

您可以使用此分析来获得在给定硬件平台上实现算法的成本。