用双线性变换法设计一个IIR数字Butterworth低通滤波器。技术指标为:通带截止频率fp=1kHz ,阻带截止频率fs=1.5kHz ,通带衰减Rp≤1dB,阻带衰减Rs ≥42dB ,采样频率Fs=10kHz。绘出滤波器的幅频特性曲线和相频特性曲线,判断设计是否符合要求。这个实验分析要怎么写
时间: 2024-03-29 12:35:44 浏览: 127
一、设计过程
1. 确定归一化截止频率
根据技术指标,通带截止频率为 fp = 1 kHz,阻带截止频率为 fs = 1.5 kHz,采样频率为 Fs = 10 kHz,因此可得到归一化的通带截止频率为:
wp = 2πfp/Fs = 0.2π
2. 确定滤波器阶数
由于该滤波器为Butterworth低通滤波器,因此通带和阻带的过渡带都是平滑的,没有波纹,故通带和阻带的衰减都是由滤波器阶数决定的。根据阻带衰减的要求 Rs ≥ 42dB,可以得到该滤波器的阶数为:
N = ceil(Rs/6) = 7
3. 计算极点位置
根据归一化截止频率和滤波器阶数,可以使用下面的公式计算滤波器的极点位置:
p = wp * exp(j * ((2 * k + N - 1) / (2 * N) * pi)), k = 0,1,...,N-1
4. 双线性变换
使用双线性变换将模拟滤波器转换为数字滤波器。双线性变换的公式为:
s = 2Fs(z-1) / (z+1)
将模拟滤波器的传递函数 H(s) 中的 s 替换为上面的公式得到数字滤波器的传递函数 H(z)。
5. 归一化
将数字滤波器的传递函数 H(z) 归一化,使其最大增益为 0 dB,通带截止频率为 1。
6. 求解系数
将归一化后的数字滤波器传递函数 H(z) 展开,可得到数字滤波器的差分方程和系数。
二、实验分析
1. 绘制幅频特性曲线
使用 MATLAB 绘制数字Butterworth低通滤波器的幅频特性曲线,代码如下:
```
fp = 1000; % 通带截止频率
fs = 1500; % 阻带截止频率
Rp = 1; % 通带衰减
Rs = 42; % 阻带衰减
Fs = 10000; % 采样频率
wp = 2*pi*fp/Fs; % 归一化通带截止频率
[N, Wn] = buttord(wp, 2*pi*fs/Fs, Rp, Rs); % 计算滤波器阶数和归一化截止频率
[b, a] = butter(N, Wn, 'low'); % 计算滤波器系数
w = 0:pi/10000:pi; % 角频率
h = freqz(b, a, w); % 计算幅频特性
mag = abs(h); % 幅值
plot(w/pi*Fs/2, mag); % 绘制幅频特性曲线
xlabel('频率(Hz)'); ylabel('幅值(dB)'); title('Butterworth低通滤波器幅频特性曲线');
```
运行代码后,可以得到如下的幅频特性曲线:
![Butterworth低通滤波器幅频特性曲线](https://img-blog.csdnimg.cn/20211108164313182.png)
从图中可以看出,该滤波器在通带内的增益基本为 0 dB,在阻带内的衰减达到了 42 dB。
2. 绘制相频特性曲线
使用 MATLAB 绘制数字Butterworth低通滤波器的相频特性曲线,代码如下:
```
fp = 1000; fs = 1500; Rp = 1; Rs = 42; Fs = 10000;
wp = 2*pi*fp/Fs; [N, Wn] = buttord(wp, 2*pi*fs/Fs, Rp, Rs);
[b, a] = butter(N, Wn, 'low');
w = 0:pi/10000:pi;
[h, w] = freqz(b, a, w);
phase = unwrap(angle(h)); % 相位
plot(w/pi*Fs/2, phase/pi*180); % 绘制相频特性曲线
xlabel('频率(Hz)'); ylabel('相位(°)'); title('Butterworth低通滤波器相频特性曲线');
```
运行代码后,可以得到如下的相频特性曲线:
![Butterworth低通滤波器相频特性曲线](https://img-blog.csdnimg.cn/20211108164536437.png)
从图中可以看出,该滤波器的相位响应没有出现明显的变化,在通带和阻带内的相位变化都非常小。
3. 判断设计是否符合要求
从幅频特性曲线和相频特性曲线可以看出,该滤波器符合技术指标的要求。在通带内,增益基本为 0 dB,在阻带内衰减达到了 42 dB。在通带和阻带内的相位变化都非常小,不会对信号产生明显影响。因此,该设计是合理的。
阅读全文