一、巴特沃斯滤波器设计原理
巴特沃斯滤波器是以英国数学家巴特沃斯(Chebyshev)的名字命名的一种滤波器,它是一种无限冲激响应(IIR)滤波器,可以用于实现各种滤波器类型,如低通、高通、带通、带阻等,同时满足指定的通带和阻带参数。
巴特沃斯滤波器采用极点零点法(pole-zero method)实现,它的特点是阻带衰减速度最快,但通带波动比其他滤波器更大。因此,它通常用于需要极端的阻带性能要求,如无线电通信系统。
二、巴特沃斯iir低通滤波器设计
下面是使用MATLAB设计一个巴特沃斯IIR低通滤波器的示例代码:
% 设计巴特沃斯IIR低通滤波器
fPass = 1000; % 通带截止频率
fStop = 2000; % 阻带截止频率
Apass = 0.5; % 通带最大衰减量(dB)
Astop = 30; % 阻带最小衰减量(dB)
% 计算归一化截止频率
wPass = 2*pi*fPass/Fs;
wStop = 2*pi*fStop/Fs;
% 计算通带最大衰减量和阻带最小衰减量的线性比例
k = 10^(-Astop/20);
% 计算巴特沃斯滤波器的阶数n
n = ceil(acosh(sqrt((k^2-1)/(wStop/wPass)^2))/acosh(wStop/wPass));
% 计算标准巴特沃斯极点的位置
if mod(n,2) == 1 % 奇数阶滤波器
poles = -1./sin((2*(1:n)-1)*pi/(2*n))*sinh(asinh(1/k)/n);
else % 偶数阶滤波器
poles = [ -1./sin((2*(1:n)-1)*pi/(2*n))*sinh(asinh(1/k)/n), -sinh(asinh(1/k)/(2*n)) ];
end
% 将标准极点放置在截止频率处,并计算对应的极点角度
poles = wPass*poles;
zeros = [];
% 将IIR滤波器转化为差分方程形式
[b,a] = zp2tf(zeros,poles,k^(-1/n));
% 输出滤波器系数
fprintf('IIR滤波器系数:\n');
disp(a);
disp(b);
三、巴特沃斯滤波器设计实验总结
在本实验中,我主要学习了巴特沃斯滤波器的设计原理和 MATLAB 的相应函数,掌握了巴特沃斯滤波器的设计流程和步骤,实现了巴特沃斯IIR低通滤波器和FIR低通滤波器,并对两种滤波器的性能和效果进行了比较。
通过本实验,我深入了解了巴特沃斯滤波器的优缺点和应用范围,掌握了如何根据指定的通带和阻带参数设计巴特沃斯滤波器的阶数和系数,并对 MATLAB 的相应函数有了更深入的理解。这对我今后的学习和研究都有重要的意义。
四、巴特沃斯滤波器设计FIR滤波器
下面是使用MATLAB设计一个巴特沃斯FIR低通滤波器的示例代码:
% 设计巴特沃斯FIR低通滤波器
fPass = 1000; % 通带截止频率
fStop = 2000; % 阻带截止频率
Apass = 0.5; % 通带最大衰减量(dB)
Astop = 30; % 阻带最小衰减量(dB)
deviation = (10^(Astop/20)-1)/(10^(Astop/20)+1);
% 计算归一化截止频率
wPass = 2*pi*fPass/Fs;
wStop = 2*pi*fStop/Fs;
% 计算滤波器的通带、阻带带宽和衰减因子
wp = wPass;
ws = wStop;
D1 = (1/deviation^2-1)/(wp^2)-1;
D2 = (1/deviation^2-1)/(ws^2)-1;
% 计算N,即滤波器的阶数
N = ceil(log(sqrt(D2/D1))/log(ws/wp)/(2*pi/Fs));
% 计算kaiser窗口的参数beta
if Astop >= 50
beta = 0.1102*(Astop-8.7);
elseif 21 <= Astop && Astop < 50
beta = 0.5842*(Astop-21)^0.4 + 0.07886*(Astop-21);
else
beta = 0.0;
end
% 计算kaiser窗口
w = kaiser(N+1,beta);
% 计算巴特沃斯滤波器的理想频率响应h
h_ideal = zeros(N+1,1);
for m = 0:N
if m ~= N/2
h_ideal(m+1) = (sin(wp*(m-N/2))/(pi*(m-N/2)))*(w(m+1)/w(N/2+1));
else
h_ideal(m+1) = wp/pi*(w(m+1)/w(N/2+1));
end
end
% 计算实际频率响应
[h,omega] = freqz(h_ideal,1,1024,Fs);
mag = abs(h);
mag = mag/max(mag);
theta = angle(h);
% 输出滤波器系数
h_fir = h_ideal';
fprintf('FIR滤波器系数:\n');
disp(h_fir);
五、巴特沃斯滤波器设计流程
巴特沃斯滤波器的设计流程如下:
1. 确定滤波器类型和截止频率
根据应用需求和信号特点,确定需要实现的滤波器类型和截止频率。
2. 确定通带最大衰减量和阻带最小衰减量
根据指定的滤波器类型和截止频率,计算出通带最大衰减量和阻带最小衰减量。
3. 计算归一化截止频率
将实际截止频率归一化为单位圆上的频率。
4. 计算通带最大衰减量和阻带最小衰减量的线性比例
将通带最大衰减量和阻带最小衰减量转化为线性比例形式,用于计算滤波器的阶数。
5. 计算滤波器的阶数n
根据指定的通带最大衰减量和阻带最小衰减量的线性比例,计算巴特沃斯滤波器的阶数。
6. 计算标准巴特沃斯极点的位置
使用标准巴特沃斯滤波器的极点位置公式,计算出标准巴特沃斯极点的位置。
7. 将标准极点放置在截止频率处
将标准极点的位置放置在实际的截止频率处,并计算对应的极点角度。
8. 将IIR滤波器转化为差分方程形式
使用零极点法将IIR滤波器转化为差分方程形式。
9. 计算滤波器系数
根据转化后的差分方程,计算出滤波器的系数。
六、巴特沃斯滤波器设计结构图
下图是一个二阶巴特沃斯低通滤波器的结构图:
七、巴特沃斯滤波器设计步骤
巴特沃斯滤波器的设计步骤可以概括为以下几个:
1. 确定滤波器类型和截止频率
根据应用需求和信号特点,确定需要实现的滤波器类型和截止频率。
2. 确定通带最大衰减量和阻带最小衰减量
根据指定的滤波器类型和截止频率,计算出通带最大衰减量和阻带最小衰减量。
3. 计算归一化截止频率
将实际截止频率归一化为单位圆上的频率。
4. 计算通带最大衰减量和阻带最小衰减量的线性比例
将通带最大衰减量和阻带最小衰减量转化为线性比例形式,用于计算滤波器的阶数。
5. 计算滤波器的阶数n
根据指定的通带最大衰减量和阻带最小衰减量的线性比例,计算巴特沃斯滤波器的阶数。
6. 计算标准巴特沃斯极点的位置
使用标准巴特沃斯滤波器的极点位置公式,计算出标准巴特沃斯极点的位置。
7. 将标准极点放置在截止频率处
将标准极点的位置放置在实际的截止频率处,并计算对应的极点角度。