主要内容

使用MATLAB编码器的桌面实时音频加速

此示例显示了如何使用MATLAB®Coder™使用C代码生成来加速实时音频应用程序。您必须安装Matlab Coder™软件以运行此示例。

介绍

用自动生成的MATLAB可执行文件(MEX函数)替换MATLAB代码的部分可以加速模拟。使用MATLAB编码器,您可以生成可读和便携式的C代码并将其编译为替换MATLAB算法的等效部分的MEX函数。

此示例展示了使用音频缺口过滤应用程序的代码生成。

陷波过滤

陷波滤波器用于消除来自信号的特定频率。缺口滤波器的典型滤波器设计参数是凹口中频率和3 dB带宽。中心频率是滤波器具有零的线性增益的频率。3 dB带宽测量在半功率或3 dB衰减点计算的过滤器的槽口的频率宽度。

在此示例中使用的辅助功能是helperaudiotoneremoval.。该功能从文件中读取由250 Hz正弦音调损坏的音频信号。helperaudiotoneremoval.使用凹口过滤器删除干扰音并将滤波信号写入文件。

您可以使用Spectrum Analyzer可视化损坏的音频信号。

reader = dsp.audiofilereader('guitar_plus_tone.ogg');范围= dsp.spectrumanalyzer('采样率',读者。赞美,......'rbwsource''财产''rbw',5,......'plotastwosidedspectrum',错误的,......'spectralaverages',10,......'rusiancyspan''开始和停止频率'......'startfrequency',20,......'停止',1000,......'标题''音频信号损坏250 Hz音调');尽管〜ISDONE(读者)音频=读取器();范围(音频(:,1));结尾

C代码生成加速

测量读取音频文件所需的时间,过滤出干扰音调,并使用MATLAB代码写入过滤的输出。

Tic HelperaudiotOnereMoval T1 = TOC;FPRINTF('matlab模拟时间:%d \ n',t1)
MATLAB仿真时间:3.701829E + 00

接下来,生成mex函数helperaudiotoneremoval.使用MATLAB编码器功能,Codegen.(MATLAB编码器)

Codegen.helperaudiotoneremoval.

测量执行MEX函数的时间并计算使用编译功能的加速增益。

Tic Helperaudiotoneremoval_Mex T2 = TOC;FPRINTF('代码生成模拟时间:%d \ n',t2)
代码生成仿真时间:2.167587E + 00
FPRINTF('加速因素:%6.2f \ n',t1 / t2)
加速因子:1.71

相关话题