
基于matlab的模拟滤波器和数字滤波器设计其中数字滤波器包扩IIR和FIR的低通、高通、带通、带阻四大类型模拟滤波器包括巴特沃斯( Butterworth)和切比雪夫(Chebyshev)算法下的低通、高通、带通、带阻四种类型。在信号处理中滤波器设计是个基本功。咱们今天就拿Matlab当工具手把手搞点实战操作。先来点模拟滤波器的活再整数字滤波器的花活记得系好安全带——可能有点颠簸。模拟滤波器复古玩法更带感先拿巴特沃斯开刀。这哥们儿的特点就是通带贼平代价是过渡带比较肉。想要个截止频率1kHz的低通看代码n 5; % 五阶才够劲 Wn 2*pi*1000; % 角频率别搞错 [b,a] butter(n, Wn, low, s); freqs(b,a) % 画图验货注意这里的s参数是模拟滤波器的开关没这货就变数字滤波器了。幅频曲线会像坐滑梯一样平缓下降这就是巴特沃斯的特色。切比雪夫就刺激了通带波纹浪得飞起。想整个带通上代码Rp 1; % 通带允许1dB的浪 Wn [2*pi*800 2*pi*1200]; % 800到1200Hz带通 [b,a] cheby1(4, Rp, Wn, bandpass, s); freqs(b,a, linspace(0,2000,1000)*2*pi) % 重点观察通带波纹四阶就能比巴特沃斯五阶的过渡带更陡代价就是通带里像心电图一样的波动。做射频电路时这货特别有用毕竟过渡带陡峭能省不少事。基于matlab的模拟滤波器和数字滤波器设计其中数字滤波器包扩IIR和FIR的低通、高通、带通、带阻四大类型模拟滤波器包括巴特沃斯( Butterworth)和切比雪夫(Chebyshev)算法下的低通、高通、带通、带阻四种类型。数字滤波器IIR和FIR的战争IIR玩递归用模拟滤波器转数字的法子最溜。搞个高通玩玩Fs 8000; % 采样率8kHz fc 2000; % 截止2kHz [b,a] butter(5, fc/(Fs/2), high); freqz(b,a) % 看数字域的幅频注意归一化频率的处理fc/(Fs/2)这个操作能把实际频率映射到0-1范围。这个设计本质是把模拟巴特沃斯用双线性变换转成数字版相位非线性这事得认。FIR就耿直多了全零点结构注定相位能线性。整个带阻滤波器N 31; % 31阶才有排面 F [0 0.4 0.45 0.55 0.6 1]; % 频率分段 A [1 1 0 0 1 1]; % 对应幅值 b firpm(N, F, A); freqz(b,1) % 看这凌厉的过渡带用Remez算法设计的等波纹滤波器过渡带宽度和阶数直接相关。注意频率点要成对设置阻带衰减能到40dB以上代价是计算量比IIR大得多。类型切换秘籍想改滤波器类型参数里改个单词的事低通→高通low变high带通→带阻bandpass改bandstop切比雪夫II型把cheby1换成cheby2阻带波纹更可控不过要注意设计带通/带阻时频率参数得是二元数组。比如模拟带阻Wn [2*pi*900, 2*pi*1100]; % 阻带900-1100Hz [b,a] cheby2(6, 40, Wn, stop, s); % 40dB阻带衰减实战避坑指南数字滤波器的阶数选择别太抠门FIR尤其吃阶数切比雪夫的通带波纹Rp建议控制在3dB以内带通设计时注意归一化频率别超过1用fvtool工具比freqz更直观能同时对比多个设计最后扔个彩蛋——用FDATool可视化设计fdatool % 直接命令行召唤神器这个交互界面能实时调整参数看着幅频/相频曲线变化比纯写代码更直观。尤其是做复杂滤波器时先用FDATool找感觉再导出代码最靠谱。