这个例子展示了如何使用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));结束
测量读取音频文件所需的时间,过滤掉干扰音,并使用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