主要内容

通过双通道滤波器组重建

这个例子展示了如何设计完美重建双通道滤波器,也被称为正交镜像滤波器(QMF)银行,因为他们使用权力互补滤波器。

通常在数字信号处理需要将信号分解成低和高频段,之后需要结合重建原始信号。这样的一个例子是在子带编码(SBC)。

这个例子将首先模拟完美重建过程过滤信号由克罗内克增量。块的输入、输出和错误信号,以及大小范围的完整的系统的传递函数。完美的有效性通过这个过滤器银行显示重建。之后,一个示例应用程序展示了两次能带一个音频文件可以处理不同的重建没有多大影响。

完美的重建

完美的重建是一个过程,一个信号是完全恢复后分为低频和高频。下面是一个完美的重建过程的框图,使用理想的过滤器。完美的重建过程需要四个过滤器,两个低通滤波器(H0和G0)和两个高通滤波器(H1和G1)。此外,它需要一个downsampler和upsampler之间两者之间的两个低通和高通滤波器。请注意,我们必须考虑到这样一个事实:输出过滤器需要获得两个前upsampler来弥补。

完美重建双通道滤波器组

DSP系统工具箱™提供一个专门的函数,称为FIRPR2CHFB,设计实现一个冷杉完美重建所需的四个过滤器双通道滤波器组如上所述。FIRPR2CHFB四FIR滤波器设计分析(H0和H1)和合成(G0和G1)双通道完全重构滤波器组的部分。设计对应于所谓的正交滤波器也称为power-symmetric滤波器,这是需要为了实现完美的重建。

让我们设计一个滤波器组与过滤器订单99和低通和高通滤波器的通带边缘0.45和0.55,分别为:

N = 99;[LPAnalysis, HPAnalysis LPSynthsis HPSynthesis] = firpr2chfb (N, 0.45);

这些过滤器的大小反应是策划如下:

fvt = fvtool (LPSynthsis HPAnalysis LPAnalysis, 1, 1, 1, HPSynthesis, 1);fvt。颜色= (1 1 1);传奇(fvt“Hlp低通杀害多人者”,“水马力高通杀害多人者”,“Glp低通插值器”,“Ghp高通插入器”);

注意分析路径由一个后跟downsampler过滤,这是一个杀害多人者,和合成路径由一个upsampler后跟一个过滤器,这是一个插入器。DSP系统工具箱™提供了实现这两个系统对象dsp.SubbandAnalysisFilter进行分析和dsp.SubbandSynthesisFilter合成部分。

analysisFilter = dsp。SubbandAnalysisFilter (LPAnalysis HPAnalysis);%分析部分synthFilter = dsp。SubbandSynthesisFilter (LPSynthsis HPSynthesis);%合成部分

为了一个例子,让p [n]表示信号

,让x [n]被定义为信号

注意:由于MATLAB®使用从索引、三角洲[n]当n = 1 = 1。

x = 0 (50, 1);x (1:3) = 1;x (8) = 2;x (16:18) = 3;x (24:26) = 4;x (32:34) = 3;x (40:42) = 2;x (48:50) = 1;sigsource = dsp.SignalSource (“SignalEndAction”,循环重复的,“SamplesPerFrame”,50);sigsource。信号= x;

将仿真的结果,我们需要三个范围——第一个比较输入信号和重建的输出,第二测量两者之间的误差和第三情节的大小反应整个系统。

%比较输入信号和重建的输出范围sigcompare = dsp.ArrayPlot (“NumInputPorts”2,“ShowLegend”,真的,“标题”,的输入(通道1)和重建(2)频道信号”);%绘制输入之间的均方根误差范围和重建信号errorPlot = timescope (“标题”,均方根误差的,“SampleRate”,1“TimeUnits”,“秒”,“YLimits”(-0.5 - 2),“TimeSpanSource”,“属性”,“时间间隔”,100,“TimeSpanOverrunAction”,“滚动”);%计算传递函数分析和级联的%的合成子带滤波器tfestimate = dsp.TransferFunctionEstimator (“FrequencyRange”,“中心”,“SpectralAverages”,50);%范围绘制的幅度响应传递函数估计tfplot = dsp.ArrayPlot (“PlotType”,“行”,“YLabel”,的频率响应(dB),“标题”,完整的系统的传递函数,“XOffset”,-25,“包含”,的频率(赫兹));

模拟完美重建

我们现在通过输入信号通过子带滤波器和重建的输出。结果绘制在创建的范围。

我= 1:10 0输入= sigsource ();(嗨,lo) = analysisFilter(输入);%的分析重建= synthFilter(嗨,lo);%的合成%比较信号。延迟输入,以便它与过滤%输出。延迟是由于过滤器。sigcompare(输入(2:结束),重建(1:end-1));%情节之间的误差信号呃= rms(输入(2:结束)——重建(1:end-1));errorPlot(错);%估计传递函数的级联Txy = tfestimate(输入(2:结束),重建(1:end-1));tfplot (20 * log10 (abs (Txy)));结束释放(errorPlot);

完美重建输出分析

我们可以看到从第一个两个情节完美重建双通道滤波器组x [n]完全重建原始信号。最初的错误是由于延迟过滤器。第三个图显示子带滤波器的级联不修改信号的频率特性。

应用程序的部分波段过滤器-音频处理

部分波段过滤器允许我们过程中的高频信号的方式不同于低频率的方式处理。作为一个例子,我们将加载一个音频文件,数字转换其低频字,比高频率的高。上面的重建然后可能并不完美,但它仍将是一个合理准确的一个。

注意:这需要一个许可证定点设计师

首先,创建系统对象加载和播放音频文件。

audioInput = dsp.AudioFileReader;audioWriter = audioDeviceWriter (“SampleRate”,audioInput.SampleRate);

有一定程度的参考,我们可以玩原来的音频

~结束(audioInput)输入= audioInput ();%加载一个框架audioWriter(输入);%的框架结束%等到播放音频暂停(10 * audioInput.SamplesPerFrame / audioInput.SampleRate);重置(audioInput);%重置为文件的开始释放(audioInput);%关闭输入文件释放(audioWriter);%的音频输出设备

接下来,我们想要重置完美重建的部分波段过滤器从上面的示例中,这样我们可以重用他们。释放方法情节能够改变某些属性。

隐藏(errorPlot)隐藏(tfplot)重置(analysisFilter);释放(analysisFilter);%释放改变输入数据的大小重置(synthFilter);释放(synthFilter);%释放改变输入数据的大小%情节错误errorPlot。SampleRate = audioInput.SampleRate / audioInput.SamplesPerFrame;errorPlot。时间间隔= 5.5;清晰的sigcompare%不需要情节比较信号重置(tfestimate);%传递函数估计释放(tfestimate);释放(tfplot);%的情节为传递函数估计tfplot。YLimits = (-20、60);tfplot。XOffset = -audioInput.SampleRate / 2;tfplot。SampleIncrement =audioInput.SampleRate / audioInput.SamplesPerFrame;

仿真循环非常类似于一个完美的重建的例子开始。这里的变化是:

  1. 量化为低频组件执行8位和高频字有4位。

  2. 重建音频回放让用户听到它,注意从输入音频文件的任何更改。注意,量化的部分波段保存在容器,因为dsp.SubbandSynthesisFilter对象需要输入相同的numerictype。

显示(tfplot) (errorPlot)~结束(audioInput)输入= audioInput ();%加载框架的音频(嗨,lo) = analysisFilter(输入);%的分析QuantizedHi =双(fi(嗨,1、4、9));% 4位数字转换QuantizedLo =双(fi (lo, 1、8、8));% 8位数字转换重建= synthFilter (QuantizedHi QuantizedLo);%的合成%情节之间的误差信号呃= rms(输入(2:结束)——重建(1:end-1));errorPlot(错);%的重建音频帧audioWriter(重建);%估计传递函数的级联Txy = tfestimate(输入(2:结束),重建(1:end-1));tfplot (20 * log10 (abs (Txy)));结束释放(errorPlot);%等到播放音频暂停(10 * audioInput.SamplesPerFrame / audioInput.SampleRate);释放(audioWriter);%的音频输出设备重置(audioInput);%重置为文件的开始释放(audioInput);%关闭输入文件

误差图所示,重建并不完美,因为量化。同时,与前面的情况下,完成系统的传递函数估计也不是0分贝。可以看到不同的增益低频率比更高。然而,听到重建音频信号的回放,你会观察到,人类的耳朵不太明显的分辨率的变化,更多的高频字甚至较小的地方。