主要内容

测量流实时音频算法的性能

此示例呈现了一个实用程序,可用于分析用于实时流应用的信号处理算法的定时性能。

介绍

使用MATLAB实时原型的能力主要取决于其执行性能。性能受许多因素的影响,例如算法的复杂性,采样频率和输入帧大小。最终,算法必须足够快,以确保它可以始终在可用时间预算内执行,而不是丢弃任何帧。每当音频输入队列溢出时丢弃帧,使用新的样本(不读取足够快)或者音频输出队列欠下正常(不足以足够快)。丢弃的帧导致输出音频信号中的不期望的伪像。

此示例介绍了一个实用程序,可以在Matlab中配置音频信号处理算法的执行性能,并将其与可用时间预算进行比较。

本例中的结果是在运行时钟速度为3.50 GHz的Intel (R) Xeon (R) CPU和64gb RAM的机器上获得的。系统规格不同,结果也不同。

测量陷波滤波器应用的性能

在此示例中,您测量使用的第八次陷波滤波器的性能dsp.biquadfilter

HelperaudioloOptimerexample.定义并实例化算法中使用的变量。使用a从文件读取输入dsp.audiofilereader.对象,然后在处理循环中流过陷波器。

audioExample.audioloOptimer.是用于分析执行性能和显示结果摘要的实用程序对象。该实用程序使用简单的tic/toc命令来记录模拟的不同阶段的时间。初始化时间(即在模拟循环开始之前实例化和设置变量和对象所花费的时间)是使用Ticinit.tocinit.方法。使用该各个模拟环路时间使用Ticloop.Tocloop.方法。仿真循环完成后,使用该对象生成性能报告GenerateReport.方法。

执行HelperaudioloOptimerexample.要运行模拟并查看性能报告:

helperAudioLoopTimerExample;

性能报告数字在顶部图中显示循环执行时间的直方图。红线表示允许的最大循环执行时间或预算,上述样本将被丢弃。每个仿真环路的预算等于L / FS,其中L是输入帧大小,FS是采样率。在此示例中,L = 512,FS = 44100 Hz,每个环路的预算约为11.6毫秒。性能报告还显示底部绘图中各个模拟环路的运行时。同样,红线代表每个循环的允许预算。

请注意,虽然中位循环时间在预算范围内很好,但最大循环时间超过预算。从底部绘图,很明显,预算超过了第一个循环通行证,并且后续循环运行在预算范围内。第一个仿真环路的相对缓慢的性能是由于第一次调用步骤方法时产生的罚球dsp.biquadfilterdsp.audiofilereader.对象。第一个呼叫一步触发不依赖于步骤输入的一次性任务的执行,例如硬件资源分配和状态初始化。这个问题可以通过在模拟循环之前执行一次性任务来缓解。方法来执行一次性任务设置方法对初始化阶段的仿真对象。执行HelperaudioloOptimerexample(真)启用预循环安装程序重新运行模拟。

HelperaudioloOptimerexample(真);

所有循环运行现在都在预算范围内。请注意,与第一个性能报告相比,最大和总循环时间都急剧减少,以较高的初始化时间为代价。