数字信号处理 第七章(FIR数字滤波器设计)
参考教程:https://www.bilibili.com/video/BV1qTCDYpEFr?spm_id_from=333.788.videopod.sections&vd_source=8f8a7bd7765d52551c498d7eaed8acd5
一、线性相位FIR数字滤波器的条件和特点
1、线性相位FIR滤波器单位脉冲响应的条件
(1)相比于IIR滤波器,FIR滤波器可以做到严格线性相位,可以具有任意的幅度特性。
(2)两类线性相位:
(3)线性相位条件下单位脉冲响应的特性:
(4)线性相位的充要条件:
2、线性相位FIR滤波器的幅度响应的特点
(1)系统函数幅频响应表达式推导:
(2)为偶对称情况下的幅频响应特性:
(3)为奇对称情况下的幅频响应特性:
3、线性相位FIR滤波器系统函数零极点的特点
二、利用窗函数法设计FIR滤波器
1、窗函数法的设计思路
2、不同窗函数的频谱和指标
(1)不同窗函数及它们的频谱如下所示,增加窗函数的长度(即增大N),会引起过渡带变窄,但主旁瓣能量比不变。
(2)各种窗函数及其参数:
(3)窗谱指标和加窗后滤波器性能指标:
3、高通、带通、带阻滤波器的设计方法
(1)上面介绍窗函数法时都是以低通滤波器为例,不过另外三种滤波器都可以参考低通滤波器的设计方法设计出来,即求得理想单位抽样响应后将其与窗函数相乘。
(2)窗函数法设计高通滤波器:
理想高通滤波器的频率响应可视为全通滤波器的频率响应减去低通滤波器的频率响应,如下所示,即“高通滤波器 = 全通滤波器 - 低通滤波器”
(3)窗函数法设计带通滤波器:
理想带通滤波器的频率响应可视为两个低通滤波器的频率响应相减,如下所示,即“带通滤波器 = 低通滤波器1 - 低通滤波器2”
(4)窗函数法设计带阻滤波器:
理想带阻滤波器的频率响应可视为高通滤波器的频率响应与低通滤波器的频率响应相加,如下所示,即“带阻滤波器 = 高通滤波器 + 低通滤波器”
三、利用频域采样法设计FIR滤波器
1、频域采样法的设计思路
2、关于线性相位约束的考虑
3、逼近误差及其改进措施
四、利用等波纹逼近法设计FIR滤波器
1、等波纹逼近法的基本思想
(1)等波纹最佳逼近法是一种优化设计法,它克服了窗函数设计法和频率采样法的缺点,使最大误差最小化,并在整个逼近频段上均匀分布。
(2)用等波纹最佳逼近法设计的FIRDF的幅频响应在通带和阻带都是等波纹的,而且可以分别控制通带和阻带波纹幅度。最佳逼近是指在滤波器长度给定的条件下使加权误差波纹幅度最小化。
(3)算法说明:
2、用MATLAB实现等波纹最佳逼近设计方法
3、举例
%定义边界频率向量和每个频段希望逼近的幅度值,频段数量是“边界频率数量-1”
f = [0.2,0.35,0.65,0.8]; m = [1,0,1];%定义通带最大衰减系数和阻带最小衰减系数
rp = 1; rs = 60;%求解通带和阻带波纹幅度
dat1 = (10^(rp/20)-1)/(10^(rp/20)+1); dat2 = 10^(-rs/20);
rip=[dat1,dat2,dat1];%采用Remez算法求滤波器单位脉冲响应
[M,fo,mo,wo] = remezord(f,m,rip);
hn = remez(M,fo,mo,wo);%作图
Mk = 1024; hk = fft(hn,Mk); n = 0:length(hn) - 1;
subplot(2,1,1); stem(n,hn,'.');
xlabel('n'); ylabel('h(n)');grid on
k = 1:Mk/2; w = (0:Mk/2-1) / (Mk/2);
subplot(2,1,2); plot(w,20*log10(abs(hk(k)))); grid on;
axis([0,1,-90,5]);
xlabel('\omega/\pi'); ylabel('Hk幅度(dB)');