主要内容

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

本实施例提供了可用于分析的设计用于实时流应用信号处理算法的定时性能的实用程序。

介绍

利用MATLAB实时原型的音频信号处理算法的能力主要取决于它的执行性能。性能由许多因素,如算法的复杂性,采样频率和输入帧大小的影响。最终,算法必须足够快,以确保它可以可用时间预算范围内始终执行,而不是丢弃任何帧。帧被丢弃每当音频输入队列溢出与新样本(不读速度不够快)或者音频输出队列欠载(不写入速度不够快)。丢帧导致在输出音频信号不希望的伪像。

这个例子提出了一个实用程序配置文件中MATLAB的音频信号处理算法的执行性能,并将其与可用的时间预算。

本例的结果是在一台运行Intel (R) Xeon (R) CPU的机器上获得的,该CPU时钟速度为3.50 GHz, RAM为64 GB。根据系统规格的不同,测试结果会有所不同。

陷波滤波器的应用程序的性能度量

在这个例子中,你衡量一个八阶陷波滤波器的性能,使用实施dsp.BiquadFilter

helperAudioLoopTimerExample定义和实例化在算法中使用的变量。输入是从文件用阅读dsp.AudioFileReader对象,然后在处理循环中流过陷波滤波器。

audioexample.AudioLoopTimer是用于分析执行性能并显示结果摘要的实用程序对象。该实用程序使用简单的tic/toc命令来记录模拟的不同阶段的时间。初始化时间(即在模拟循环开始之前实例化和设置变量和对象所花费的时间)使用ticInittocInit方法。各个模拟循环时间所使用的测量ticLooptocLoop方法。模拟循环完成后,使用对象的所产生的业绩报告generateReport方法。

执行helperAudioLoopTimerExample运行仿真,并查看性能报告:

helperAudioLoopTimerExample;

业绩报告图显示在上图的循环执行时间的直方图。红线代表最大允许循环执行时间,或预算,高于该样本将被丢弃。每模拟循环预算等于L / Fs的,其中L是输入框的大小,Fs是采样率。在这个例子中,L = 512,FS = 44100赫兹,以及每循环预算约为11.6毫秒。业绩报告还显示在底部情节的个人模拟回路的运行时间。同样,红线代表每圈允许的预算。

请注意,虽然平均循环时间以及在预算范围内,最大循环时间超过了预算。从下图中可以看出,预算超出在第一个环通,以及后续的循环运行是在预算范围内。第一模拟循环的相对慢的性能是由于发生在第一时间步骤方法被调用的罚dsp.BiquadFilterdsp.AudioFileReader对象。第一个呼叫一步触发不依赖于步骤输入的一次性任务的执行,例如硬件资源分配和状态初始化。这个问题可以通过在模拟循环之前执行一次性任务来缓解。的方法可以执行一次性任务设置方法对初始化阶段的仿真对象进行处理。执行helperAudioLoopTimerExample(真)重新运行预回路设置仿真启用。

helperAudioLoopTimerExample(真);

所有循环运行现在的预算范围内。请注意,最大和总循环次数已大幅减少相比,第一份业绩报告,在较高的初始化时间为代价的。