主要内容

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

这个例子展示了一个实用程序,可以用于分析信号处理算法的时间性能为实时流媒体应用而设计的。

介绍

原型的能力使用MATLAB实时音频信号处理算法主要取决于它的执行性能。性能是受很多因素影响,如算法的复杂性,采样频率和输入帧大小。最终,算法必须足够快,以确保它可以在可用的时间内执行预算,不放弃任何帧。帧时被丢弃在音频输入队列已泛滥成灾的新样品(读不够快)或音频输出队列是暗流(写的不够快)。帧下降导致不良工件在输出音频信号。

这个例子展示了一个实用程序概要文件的执行性能一个音频信号处理算法在MATLAB和比较它可用的时间预算。

在这个例子中得到结果在一台计算机上运行一个英特尔(R)至强(R)的CPU时钟速度的3.50 GHz,和64 GB的RAM。结果取决于系统规范。

衡量一个陷波滤波器的性能应用

在本例中,您测量性能的eighth-order陷波滤波器,实现使用dsp.BiquadFilter

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

audioexample.AudioLoopTimer实用程序对象用于配置文件执行性能和显示结果的摘要。实用程序使用简单的抽搐/ toc命令日志的时机不同阶段的模拟。初始化时间(时间实例化并设置变量和对象仿真循环开始之前)是测量使用ticInittocInit方法。个人模拟测量使用循环时间ticLooptocLoop方法。模拟循环完成后,使用对象的生成性能报告generateReport方法。

执行helperAudioLoopTimerExample运行仿真和视图的性能报告:

helperAudioLoopTimerExample;

循环的性能报告图显示一个直方图执行时间在前的阴谋。红色的线条代表的最大允许循环执行时间,或预算,上面的样品将会下降。预算/模拟循环等于L / Fs, L是输入框的大小,Fs是采样率。在这个例子中,L = 512, Fs = 44100 Hz,每循环和预算大约是11.6毫秒。报告还显示个人的运行时性能模拟循环底部阴谋。再次,红线代表允许预算每循环。

注意,尽管中间循环时间是在预算,最大循环时间超过了预算。从底部情节,很明显,超过预算第一循环,在预算,后续的循环运行。第一个模拟循环的相对缓慢的性能是由于第一次损失的步骤方法dsp.BiquadFilterdsp.AudioFileReader对象。第一次调用一步触发器的执行一次性任务,并不依赖于输入步骤,如硬件资源分配和初始化状态。可以缓解这个问题通过执行一次性任务前的模拟循环。您可以通过调用执行一次性任务设置方法在初始化阶段的模拟对象。执行helperAudioLoopTimerExample(真正的)与pre-loop重新运行仿真设置启用。

helperAudioLoopTimerExample(真正的);

所有循环运行现在都在预算之内。注意到最大和总循环时间相比已经大幅减少第一个性能报告,以牺牲更高的初始化时间。