主要内容

参量均衡器设计

这个例子展示了如何设计参数均衡器滤波器。参数均衡器是数字滤波器,用于调整音频信号的频率内容。通过允许调整增益、中心频率和每个滤波器的带宽,参数均衡器提供了图形均衡器之外的功能。相比之下,图形均衡器只允许调整每个滤波器的增益。

典型的,参数均衡器被设计成二阶IIR滤波器。这些滤波器的缺点是,由于它们的阶数低,它们可以呈现相对较大的纹波或过渡区域,并且当它们中的几个级联时可能会相互重叠。DSP系统工具箱™提供了设计高阶IIR参数均衡器的能力。这种高阶设计为每个滤波器的形状提供了更多的控制。此外,对于传统的二阶参数均衡器,当滤波器的阶数设为二时,该设计也有特殊的情况。

这个例子讨论了两种不同的参数均衡器设计方法。第一种是使用designParamEQ第二个是使用fdesign.parameq.parameq.designParamEQ应该服务于大多数需求。它更简单,并且为大多数常见的设计提供了能力。它还支持C代码生金宝app成,如果想在运行时用生成的代码调优过滤器,就需要生成C代码。fdesign.parameq.parameq.为最终控制结果过滤器提供了许多高级设计选项。本例中并没有研究所有的设计选项。

一些基本的设计

考虑以下两种参数均衡器的设计。设计规格是相同的,除了过滤器的顺序。第一种设计是一个典型的二阶参数均衡器,将信号放大约10khz 5 dB。第二种设计对六阶滤波器做同样的工作。请注意,与二阶设计相比,六阶滤波器更接近理想的砖墙滤波器。显然,可以通过进一步提高滤波器阶数来改善近似。这种改进的近似方法的代价是由于需要更多的乘数而增加了实现成本。

Fs = 48 e3;n1 = 2;n2 = 6;g = 5;% 5分贝我们= 10000 / (Fs / 2);BW = 4000 / (Fs / 2);(B1, A1] = designParamEQ (N1, G,我们,BW);(B2 A2) = designParamEQ (N2, G,我们,BW);bq1 = dsp.biquadfilter(“SOSMatrix”,[b1。',[1,a1。']);bq2 = dsp.biquadfilter(“SOSMatrix”,[B2。',[of(3,1),a2。']);hfvt = fvtool(bq1,bq2,“Fs”Fs,“颜色”'白色的');传奇(HFVT,'2nd订单设计'“六阶设计”);

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为幅度响应(dB)的轴包含2个线型对象。这些对象代表二阶设计,六阶设计。

其中一个设计参数是滤波器带宽BW。在前面的示例中,带宽被指定为4 kHz。4khz带宽出现在一半的增益(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分贝我们= 6000 / (Fs / 2);BW1 =我们/ Q1;BW2 =我们/ Q2;(B1, A1] = designParamEQ (N, G,我们BW1);(B2 A2) = designParamEQ (N, G,我们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”);

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为幅度响应(dB)的轴包含2个线型对象。这些物体代表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 = 1200hz;Q = 10 ');

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为幅度响应(dB)的轴包含2个线型对象。这些对象代表BW1 = 200 Hz;Q = 10,BW2 = 1200 Hz;q = 10。

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

hfvt = fvtool(bq1,bq2,“FrequencyScale”'日志'“Fs”Fs,“颜色”'白色的');传奇(HFVT,“Fo1 = 2千赫”“Fo2 = 12千赫”);

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为幅度响应(dB)的轴包含2个线型对象。这些物体代表Fo1 = 2千赫,Fo2 = 12千赫。

低货架和高货架过滤器

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

Fs = 48 e3;N = 4;g = 10;% 10 dBWo1 = 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。”[(2,1),A1。]]);bq2 = dsp.biquadfilter(“SOSMatrix”,[b2。',[(2,1),a2。']);hfvt = fvtool(bq1,bq2,“Fs”Fs,“颜色”'白色的');传奇(HFVT,“低货架滤波器”'高架过滤器');

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为幅度响应(dB)的轴包含2个线型对象。这些对象代表低搁板过滤器,高搁板过滤器。

切割的参数均衡器

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

Fs = 48 e3;N = 2;g = -5;%-5 dB.我们= 6000 / (Fs / 2);BW = 2000 /(FS / 2);[b,a] = designparameq(n,g,wo,bw);bq = dsp.biquadfilter(“SOSMatrix”[B。”,[1]]);。”hfvt = fvtool(bq,“Fs”Fs,“颜色”'白色的');传奇(HFVT,'G = -5 dB');

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。具有标题幅度响应(DB)的轴包含类型线的对象。该对象表示G = -5 dB。

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

Fs = 44.1 e3;n = 8;g = -inf;q = 1.8;WO = 60 /(FS / 2);60 Hz的%缺口BW =我们/ 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,“FrequencyScale”'日志'“颜色”'白色的');传奇(HFVT,“8阶陷波滤波器”“二阶陷波滤波器”);

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为幅度响应(dB)的轴包含2个线型对象。这些对象代表第8个阶数陷波滤波器,第二个订单陷波滤波器。

级联参数均衡器

参数均衡器通常是级联(串联)的,因此可以同时使用几个参数均衡器来均衡化一个音频信号。要以这种方式连接多个均衡器,请使用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,“颜色”'白色的'“FrequencyScale”'日志');传奇(HFVT,“二阶滤波器级联”);

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。具有标题幅度响应(DB)的轴包含类型线的对象。此对象表示级联的2nd订单过滤器。

低阶设计,如上面的二阶滤波器可以相互干扰,如果他们的中心频率是紧密的间隔。在上面的例子中,以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。”[(4,1),A2。]]);FC2 = dsp.FilterCascade (BQ1a BQ2a);FC2 hfvt = fvtool (FC,“Fs”Fs,“颜色”'白色的'“FrequencyScale”'日志');传奇(HFVT,“二阶滤波器级联”“8级滤波器级联”);

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为幅度响应(dB)的轴包含2个线型对象。这些对象代表了第2个汇位的级联,第8个订单过滤器的级联。

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

对于更高级的设计,fdesign.parameq.parameq.可以使用。例如,由于频率扭曲,通常很难控制带宽发生的准确频率边缘。要做到这一点,可以使用以下方法:

Fs = 44.1 e3;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 = Design(PEQ,“SystemObject”,真正的);hfvt = fvtool(bq,“Fs”Fs,“颜色”'白色的');传奇(HFVT,'均衡器,流量= 3 kHz,fhigh = 4 khz');

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。具有标题幅度响应(DB)的轴包含类型线的对象。此对象表示具有流量= 3 kHz和fhigh = 4 kHz的均衡器。

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

搁置具有可变过渡带宽或斜率的滤波器

搁置滤波器的特性之一是过渡带宽(有时也称为过渡斜率),它可以用搁置斜率参数s来指定。带宽参考增益GBW总是被设置为搁置滤波器的升压或削减增益的一半。在所有其他参数不变的情况下,随着S的增加,过渡带宽减小,(响应的斜率增加)围绕GBW点产生“斜率旋转”,如下面的例子所示。

N = 2;Fs = 48 e3;佛= 0;% F0=0设计一个低通滤波器,F0=1设计一个高通滤波器Fc = 2 e3 / (Fs / 2);%截止频率G = 10;s = 1.5;PEQ = fdesign.parameq ('n,f0,fc,s,g0'、N、Fo Fc, S, G);BQ1 =设计(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 ');

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为幅度响应(dB)的轴包含3个线型对象。这些物体代表S=1.5, S=2.5, S=4。

利用。可以得到每个S值对应的跃迁带宽和带宽增益测量函数。我们验证了三种设计的带宽参考增益GBW是相同的,我们通过S增加时过渡宽度减小多少来量化。

m1 =测量(BQ1);get (m1,“GBW”
ans = 5
M2 =测量(BQ2);得到(m2,“GBW”
ans = 5
M3 =测量(BQ3);得到(m3,“GBW”
ans = 5
get (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 =设计(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”);

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为幅度响应(dB)的轴包含3个线型对象。这些物体代表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 =设计(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');

图过滤器可视化工具-幅度响应(dB)包含一个轴和其他类型的uitoolbar, uimenu对象。标题为幅度响应(dB)的轴包含3个线型对象。这些对象表示QA = 0.48,QA = 0.7071,QA = 2.0222。