主要内容

桌面实时音频加速与MATLAB编码器

这个例子展示了如何使用MATLAB®Coder™生成C代码来加速实时音频应用程序。必须安装MATLAB Coder™软件才能运行此示例。

介绍

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

这个例子展示了使用音频陷波过滤应用程序生成代码。

切口过滤

陷波滤波器用于消除信号中的特定频率。陷波滤波器的典型设计参数是陷波中心频率和3db带宽。中心频率是滤波器线性增益为零的频率。3db带宽测量了在半功率或3db衰减点计算的滤波器陷波口的频率宽度。

本例中使用的helper函数为helperAudioToneRemoval。该函数从文件中读取被250hz正弦音损坏的音频信号。helperAudioToneRemoval使用陷波滤波器去除干扰音,并将过滤后的信号写入文件。

您可以使用频谱分析仪可视化损坏的音频信号。

读者= dsp。AudioFileReader (“guitar_plus_tone.ogg”);= dsp范围。简介(“SampleRate”,读者。SampleRate,...“RBWSource”“属性”“RBW”5,...“PlotAsTwoSidedSpectrum”假的,...“SpectralAverages”10...“FrequencySpan”“启动和停止频率”...“StartFrequency”, 20岁,...“StopFrequency”, 1000,...“标题”“音频信号被250hz的音调损坏”);~isDone(reader)音频= reader();范围(音频(:1));结束

C代码生成加速

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

tic helperAudioToneRemoval t1 = toc;流('MATLAB仿真时间:%d\n', t1)
MATLAB仿真时间:3.701829e+00

接下来,生成一个mex函数helperAudioToneRemoval使用MATLAB Coder函数,codegen(MATLAB编码器)

codegenhelperAudioToneRemoval

测量执行mex函数所花费的时间,并用编译后的函数计算加速增益。

tic helperAudioToneRemoval_mex t2 = toc;流('代码生成模拟时间:%d\n', t2)
代码生成仿真时间:2.167587e+00
流(“加速因素:% 6.2 f \ n”t1 / t2)
加速因子:1.71

相关的话题