复杂的带通滤波器设计
这个例子展示了如何设计复杂的带通滤波器。复杂的带通滤波器被用于许多应用程序从如果二次抽样数字转换器残留边带调制方案模拟和数字电视广播。一个简单的方法来设计一个复杂的带通滤波器与低通原型开始并应用一个复杂转变频率转换。在这个例子中,我们回顾一些单级单频FIR滤波器的低通原型IIR滤波器的多级多重速率的FIR滤波器。
单级单频冷杉设计
对于单频冷杉设计,我们只是每组系数乘以(又名的外差式”)一个复指数。在下一个示例中,我们旋转的零通尼奎斯特滤波器原型的归一化频率。6。
Hlp =设计(fdesign.nyquist (8), SystemObject = true);%低通原型N =长度(Hlp.Numerator) 1;Fc = 6;%的频移Hbp =克隆(Hlp);家庭血压。分子= Hbp.Numerator。* exp (1 j * Fc *π* (0:N));Hbp hfvt = fvtool (Hlp,颜色=“白色”);传奇(hfvt“低通原型”,“复杂的带通”位置=“西北”)
同样的技术也适用于单级多重速率的过滤器。
多重速率的多级冷杉设计
在多重速率的多级FIR滤波器的情况下,我们需要考虑每个过滤器作用于不同的相对频率。对于多级杀害多人者所需的频移,只适用于第一个阶段。后续阶段还必须规模所需的频移,各自的累积大量毁灭的因素。
高清= designMultistageDecimator(16日,16日,0.1,75);Fc = 2;%的频移Hdbp =克隆(Hd);Fck = Fc;为k = 1: Hdbp。getNumStages Stagek = Hdbp。(sprintf (“阶段%我”、k));Nk =长度(Stagek.Numerator) 1;Stagek。分子= Stagek.Numerator。* exp (1 j * Fck *π* (0:Nk));%更新频移应用到k阶段Fck = Fck * Stagek.DecimationFactor;结束hfvt = fvtool(高清,Hdbp);传奇(hfvt“低通原型”,“复杂的带通”位置=“西北”)
同样,对于多级插入器所需的频移,只适用于去年阶段。前一阶段还必须规模所需的频移,各自的累积插值系数。
你好= designMultistageInterpolator(16日,16日,0.1,75);Fc =。4;%的频移Hibp =克隆(Hi);Fck = Fc;为k = Hibp。getNumStages: 1:1 Stagek = Hibp。(sprintf (“阶段%我”、k));Nk =长度(Stagek.Numerator) 1;Stagek。分子= Stagek.Numerator。* exp (1 j * Fck *π* (0:Nk));%更新频移应用到k阶段Fck = Fck * Stagek.InterpolationFactor;结束hfvt = fvtool(嗨,Hibp);传奇(hfvt“低通原型”,“复杂的带通”位置=“西北”)
我们可以设计多级带通滤波器容易使用dsp.ComplexBandpassDecimator
系统对象。指定的对象设计带通滤波器基于大量毁灭因素,中心频率和采样率。不需要低通滤波器系数转换成带通和我们在上面的部分对象会为我们做这件事。
设计一个复杂的带通滤波器的大量毁灭因素16日5 KHz的中心频率,采样率为44.1 KHz,过渡宽度100赫兹,和75分贝的阻带衰减:
5000年英国石油(bp) = dsp.ComplexBandpassDecimator(16日SampleRate = 44100,…TransitionWidth = 100,…StopbandAttenuation = 75);
可视化滤波器响应使用freqz
:
freqz (bp)
可视化的反应不同的过滤阶段使用visualizeFilterStages
:
visualizeFilterStages (bp);
请注意,只有第一个过滤器是转移到5 KHz。随后的低通滤波器,滤阶段真正的系数。设置MinimizeComplexCoefficients
属性为false将所有过滤阶段到5000千赫。
带通滤波器使用的成本成本
:
成本(bp)
ans =结构体字段:NumCoefficients: 144 NumStates: 272 RealMultiplicationsPerInputSample: 27.8750 RealAdditionsPerInputSample: 27
单频IIR设计
最后的单频IIR的设计,我们可以使用一个复杂的变化频率转换或一个复杂的转换带通IIR低通滤波器。在后一种情况下,带通滤波器的带宽也可以修改。
Fp = 2;%设计一个低通原型,并获得二阶系数Hiirlp =设计(fdesign.lowpass (Fp,二十五分,5,80),“ellip”,SystemObject = true);B = (Hiirlp.ScaleValues (1: end-1)”)。* Hiirlp.Numerator;一个= Hiirlp.Denominator;%进行低通到复杂的带通变换Fc = 6;%的频移(公元前,Ac) = iirlp2bpc (B, A,…%将低通滤波器转换成复杂的带通Fp, Fc-Fp Fc + Fp);%低通滤波器通带频率映射%带通频率通带%构造一个过滤器对象和情节的响应Hiircbp = dsp。公元前SOSFilter (Ac);hfvt = fvtool (Hiirlp Hiircbp);传奇(hfvt“低通原型”,“复杂的带通”位置=“西北”)