主要内容

参数均衡器设计

此示例显示了如何设计参数均衡器过滤器。参数均衡器是用于调整声音信号的频率内容的音频中使用的数字滤波器。参数均衡器通过允许调整每个过滤器的增益,中心频率和带宽来提供超出图形均衡器的能力。相比之下,图形均衡器仅允许调整每个过滤器的增益。

通常,参数均衡器被设计为二阶IIR过滤器。这些滤波器具有缺点,因为它们的低阶,它们可以呈现相对较大的纹波或过渡区域,并且当其中几个在级联连接时可以彼此重叠。DSP System Toolbox™提供了设计高阶IIR参数均衡器的能力。这种高阶设计提供了更大的控制对每个过滤器的形状。此外,如果将过滤器的顺序设置为两个,则将特殊情况特殊情况到传统的二阶参数均衡器。

该示例讨论了两个分开的参数均衡器设计方法。第一个是使用的DesignParameq.第二个是使用fdesign.parameqDesignParameq.应该提供大多数需求。它更简单,提供最常见的设计的能力。它还支持C代码生金宝app成,如果希望在使用生成的代码在运行时调整过滤器。fdesign.parameq提供许多高级设计选项,以实现所得滤波器的最终控制。并非所有设计选项都在此示例中探讨。

一些基本的设计

考虑以下两个参数均衡器的设计。除过滤器订单外,设计规范是相同的。第一个设计是典型的二阶参数均衡器,其将10 kHz的信号提升5 dB。第二种设计与六阶滤波器相同。请注意,与二阶设计相比,第六级滤波器如何更接近理想的砖墙过滤器。显然,通过增加滤波器顺序,可以提高近似。支付此类改进近似的价格是增加的实施成本,因为需要更多的乘数。

Fs = 48 e3;N1 = 2;N2 = 6;G = 5;% 5分贝WO = 10000 /(FS / 2);BW = 4000 /(FS / 2);[B1,A1] = DesignParameq(N1,G,WO,BW);[B2,A2] = DesignParameq(N2,G,WO,BW);bq1 = dsp.biquadfilter('sosmatrix',[b1。',[1,a1。']);bq2 = dsp.biquadfilter('sosmatrix', [B2。”[(3,1),A2。]]);hfvt = fvtool(bq1,bq2,'fs',fs,“颜色”'白色');传奇(hfvt'2nd订单设计'“六阶设计”);

其中一个设计参数是滤波器带宽,BW。在前面的示例中,带宽指定为4 kHz。4 kHz带宽发生在增益(2.5 dB)的一半。

基于质量因素的设计

另一个常见的设计参数是质量因子,Q.滤波器的Q被定义为WO / BW(中心频率/带宽)。它提供了滤波器的锐度的度量,即,参考值(0 dB)和增益G之间的滤波器转换的敏感度。考虑两个具有相同G和WO的设计,但不同的Q值。

Fs = 48 e3;N = 2;Q1 = 1.5;Q2 = 10;g = 15;%15 dB.我们= 6000 / (Fs / 2);bw1 = wo / q1;bw2 = wo / q2;[B1,A1] = DesignParameq(n,g,wo,bw1);[b2,a2] = designparameq(n,g,wo,bw2);bq1 = dsp.biquadfilter('sosmatrix',[b1。',[1,a1。']);bq2 = dsp.biquadfilter('sosmatrix', (B2。”,[1 A2。]]);hfvt = fvtool(bq1,bq2,'fs',fs,“颜色”'白色');传奇(hfvt'q = 1.5''q = 10');

尽管较高的Q因子对应于更清晰的滤波器,但还必须注意,对于给定带宽,Q因子仅通过增加中心频率来增加。这似乎是直观的。例如,以下两个滤波器具有相同的Q因子,但是一个明显地占用比另一个更大的带宽。

Fs = 48 e3;N = 2;q = 10;g = 9;% 9 dBWo1 = 2000 / (Fs / 2);Wo2 = 12000 / (Fs / 2);BW1 = Wo1 / Q;BW2 = Wo2 / Q;(B1, A1] = designParamEQ (N, G, Wo1 BW1);(B2 A2) = designParamEQ (N, G, Wo2 BW2);bq1 = dsp.biquadfilter('sosmatrix',[b1。',[1,a1。']);bq2 = dsp.biquadfilter('sosmatrix', (B2。”,[1 A2。]]);hfvt = fvtool(bq1,bq2,'fs',fs,“颜色”'白色');传奇(hfvt'BW1 = 200 Hz;q = 10''BW2 = 1200 Hz;q = 10');

虽然在日志频率范围内查看时,两个过滤器的“倍频带宽”是相同的。

hfvt = fvtool(bq1,bq2,'验证''log''fs',fs,“颜色”'白色');传奇(hfvt'fo1 = 2 khz''fo2 = 12 khz');

低架和高架滤波器

当这种频率设置为0.5 * Pi(半键速率的一半)时,滤波器的带宽BW仅围绕中心频率WO完美地居中。当WO更靠近0或PI时,存在翘曲效果,使得在中心频率的一侧发生较大的带宽部分。在边缘情况下,如果中心频率被设置为0(PI),则过滤器的整个带宽发生在中心频率的右侧(左)。结果是所谓的搁架低(高)滤波器。

Fs = 48 e3;n = 4;g = 10;%10 dB.Wo1 = 0;Wo2 = 1;%对应Fs/2 (Hz)或pi (rad/sample)BW = 1000 / (Fs / 2);在这种情况下,%带宽发生在7.4 dB中(B1, A1] = designParamEQ (N, G, Wo1, BW);(B2 A2) = designParamEQ (N, G, Wo2, BW);bq1 = dsp.biquadfilter('sosmatrix',[b1。',[of(2,1),a1。']);bq2 = dsp.biquadfilter('sosmatrix',[b2。',[(2,1),a2。']);hfvt = fvtool(bq1,bq2,'fs',fs,“颜色”'白色');传奇(hfvt“低货架滤波器”“高架子上过滤”);

切割的参数均衡器

所有先前的设计都是参数均衡器的示例,其升高了某个频带上的信号。您还可以设计在给定区域中切割(衰减)信号的均衡器。

Fs = 48 e3;N = 2;g = -5;%-5 dB.我们= 6000 / (Fs / 2);BW = 2000 / (Fs / 2);[B] = designParamEQ (N, G,我们,BW);BQ = dsp.BiquadFilter ('sosmatrix'[B。”,[1]]);。”hfvt = fvtool(bq,'fs',fs,“颜色”'白色');传奇(hfvt'G = -5 dB');

在极限下,滤波器可以设计成在指定的频率下具有零(-inf dB)的增益。这允许设计第二顺序或更高阶陷波滤波器。

fs = 44.1e3;N = 8;g = -inf;q = 1.8;WO = 60 /(FS / 2);% Notch at 60hzbw = wo / q;对于此特殊情况,将在-3 dB发生%带宽(B1, A1] = designParamEQ (N, G,我们,BW);(NUM窝]= iirnotch(我们,BW);%或[num,den] = designparameq(2,g,wo,bw);SOS2 = (NUM,穴);bq1 = dsp.biquadfilter('sosmatrix', [B1。”[(4,1),A1。]]);bq2 = dsp.biquadfilter('sosmatrix',SOS2);hfvt = fvtool(bq1,bq2,'fs',fs,'验证''log'“颜色”'白色');传奇(hfvt'第8阶陷波过滤器''2nd订单Notch滤波器');

级联参数均衡器

参数均衡器通常在级联(串联)中连接,以便同时使用若干以均衡音频信号。要以这种方式连接多个均衡器,请使用dsp.filtercascade.

Fs = 48 e3;N = 2;G1 = 3;%3 dB.g2 = -2;%-2 dB.WO1 = 400 /(FS / 2);WO2 = 1000 /(FS / 2);BW = 500 /(FS / 2);在这种情况下,%带宽发生在7.4 dB中(B1, A1] = designParamEQ (N, G1、Wo1 BW);(B2 A2) = designParamEQ (N, G2、Wo2 BW);bq1 = dsp.biquadfilter('sosmatrix',[b1。',[1,a1。']);bq2 = dsp.biquadfilter('sosmatrix', (B2。”,[1 A2。]]);FC = dsp.FilterCascade (BQ1 BQ2);hfvt = fvtool (FC,'fs',fs,“颜色”'白色''验证''log');传奇(hfvt'级联的第二订单过滤器');

低阶设计,如上述二阶滤波器,如果它们的中心频率间隔很近,就会相互干扰。在上面的例子中,以1 kHz为中心的滤波器应该有-2 dB的增益。由于来自另一个滤波器的干扰,实际增益更接近-1 dB。高阶设计不太容易受到这种干扰。

Fs = 48 e3;N = 8;G1 = 3;%3 dB.g2 = -2;%-2 dB.WO1 = 400 /(FS / 2);WO2 = 1000 /(FS / 2);BW = 500 /(FS / 2);在这种情况下,%带宽发生在7.4 dB中(B1, A1] = designParamEQ (N, G1、Wo1 BW);(B2 A2) = designParamEQ (N, G2、Wo2 BW);BQ1a = dsp.BiquadFilter ('sosmatrix', [B1。”[(4,1),A1。]]);bq2a = dsp.biquadfilter('sosmatrix',[b2。',[ofly(4,1),a2。']);fc2 = dsp.filtercascade(bq1a,bq2a);hfvt = fvtool(fc,fc2,'fs',fs,“颜色”'白色''验证''log');传奇(hfvt'级联的第二订单过滤器'“8阶滤波器级联”);

高级设计选项:指定低频和高频

对于更高级的设计,fdesign.parameq可以使用。例如,由于频率翘曲,一般来说,它可能难以控制带宽发生的精确频率边缘。为此,可以使用以下操作:

fs = 44.1e3;n = 4;流量= 3000;fhigh = 4000;grsq = 1;gref = 10 * log10(grsq);g = -8;GSQ = 10. ^(g / 10);滤波器的%幅度平方;g = 5 dBGBW = 10 * log10((GSQ + GRSQ)/ 2);%流量和Fhigh出现在-2.37 dBpeq = fdesign.parameq('n,流量,fhigh,gref,g0,gbw'......N,流量/ (Fs / 2) Fhigh / (Fs / 2), Gref, G, GBW);BQ =设计(PEQ,'systemobject',真正的);hfvt = fvtool(bq,'fs',fs,“颜色”'白色');传奇(hfvt'均衡器,流量= 3 kHz,fhigh = 4 khz');

注意,滤波器在指定的3khz和4khz的增益为-2.37 dB。

搁置具有可变转换带宽或斜率的滤波器

搁架滤波器的一个特性是转换带宽(有时也称为转换斜率),其可以由货架斜率S指定。带宽参考增益GBW总是设置为搁架滤波器的升压或切割增益的一半。所有其他参数是常数的,因为S增加转换带宽减小,(响应的斜率增加)在GBW点周围创建“斜率旋转”,如下面的示例中所示。

N = 2;Fs = 48 e3;佛= 0;%F0 = 0设计低通滤波器,F0 = 1设计高通滤波器FC = 2E3 /(FS / 2);%截止频率G = 10;S = 1.5;peq = fdesign.parameq('n,f0,fc,s,g0'、N、Fo Fc, S, G);BQ1 = Design(PEQ,'systemobject',真正的);PEQ.S = 2.5;BQ2 = Design(PEQ,'systemobject',真正的);peq.s = 4;BQ3 = Design(PEQ,'systemobject',真正的);HFVT = FVTool(BQ1,BQ2,BQ3,'fs',fs,“颜色”'白色');传奇(hfvt' S = 1.5' S = 2.5's = 4');

式中可以得到S的每个值对应的过渡带宽和带宽增益测量功能。我们验证了三个设计的带宽参考增益GBW是相同的,并且我们量化在S增加时的过渡宽度减小。

m1 =测量(BQ1);得到(m1,'gbw'
ans = 5
M2 =测量(BQ2);得到(m2,'gbw'
ans = 5
M3 =测量(BQ3);得到(m3,'gbw'
ans = 5
得到(m1,'hightransitionwidth'
ans = 0.0945
得到(m2,'hightransitionwidth'
ans = 0.0425.
得到(m3,'hightransitionwidth'
ANS = 0.0238.

随着搁板斜率参数的增加,滤波器的纹波也增加。我们可以增加过滤器顺序以减少纹波,同时保持所需的转换带宽。

N = 2;peq = fdesign.parameq('n,f0,fc,s,g0'、N、Fo Fc, S, G);BQ1 = Design(PEQ,'systemobject',真正的);peq.filterorder = 3;BQ2 = Design(PEQ,'systemobject',真正的);peq.filterorder = 4;BQ3 = Design(PEQ,'systemobject',真正的);HFVT = FVTool(BQ1,BQ2,BQ3,'fs',fs,“颜色”'白色');传奇(hfvt'n = 2''n = 3''n = 4');

具有规定质量因子的搁架过滤器

质量因子Qa可以代替斜坡参数S来设计具有可变转换带宽的斜坡滤波器。

N = 2;Fs = 48 e3;Fo = 1;%F0 = 0设计低通滤波器,F0 = 1设计高通滤波器FC = 20E3 /(FS / 2);%截止频率G = 10;q = 0.48;peq = fdesign.parameq('n,f0,fc,qa,g0',n,fo,fc,q,g);BQ1 = Design(PEQ,'systemobject',真正的);PEQ。Qa = 1 /√(2);BQ2 = Design(PEQ,'systemobject',真正的);PEQ。Qa = 2.0222;BQ3 = Design(PEQ,'systemobject',真正的);HFVT = FVTool(BQ1,BQ2,BQ3,'fs',fs,“颜色”'白色');传奇(hfvt'qa = 0.48'“Qa = 0.7071”'qa = 2.0222');