用MATLAB直接法设计巴特沃斯型数字带通滤波器,要求: fp1=3.5Hz,fp2=6.5kHz,Rp=3dB; fs1=2.5 kHz, fs2=7.5 KHz,As=15 dB,滤波器采样频率Fs=20 kHz请描绘滤波器绝对和相对幅频特性、相频特性、零极点分布图,列出系统传递函数式。
时间: 2023-08-21 12:05:49 浏览: 186
好的,这是一个比较具体的问题,需要一步步来进行解答。
首先,根据所给的参数,我们可以得到巴特沃斯带通滤波器的阶数为4,截止频率为3.5 Hz和6.5 kHz,通带最大衰减为3 dB,阻带最小衰减为15 dB。
其次,使用MATLAB中的`butter`函数可以直接设计巴特沃斯数字滤波器。代码如下:
```matlab
fs = 20000; % 采样频率
fp1 = 3.5; % 通带截止频率1
fp2 = 6500; % 通带截止频率2
fs1 = 2500; % 阻带截止频率1
fs2 = 7500; % 阻带截止频率2
Rp = 3; % 通带最大衰减
As = 15; % 阻带最小衰减
wp = [fp1 fp2] / (fs/2); % 归一化通带截止频率
ws = [fs1 fs2] / (fs/2); % 归一化阻带截止频率
[n, Wn] = buttord(wp, ws, Rp, As); % 计算滤波器阶数和归一化截止频率
[b, a] = butter(n, Wn); % 计算滤波器系数
```
接着,我们可以使用`freqz`函数绘制滤波器的幅频特性、相频特性和零极点分布图。代码如下:
```matlab
freqz(b, a, [], fs); % 绘制幅频特性
title('Magnitude Response');
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
figure;
freqz(b, a, [], fs); % 绘制相频特性
title('Phase Response');
xlabel('Frequency (Hz)');
ylabel('Phase (rad)');
figure;
zplane(b, a); % 绘制零极点分布图
title('Pole Zero Plot');
```
最后,系统传递函数式可以通过`tf`函数来计算得到。代码如下:
```matlab
H = tf(b, a, 1/fs); % 系统传递函数式
```
综上所述,完整的MATLAB代码如下:
```matlab
fs = 20000; % 采样频率
fp1 = 3.5; % 通带截止频率1
fp2 = 6500; % 通带截止频率2
fs1 = 2500; % 阻带截止频率1
fs2 = 7500; % 阻带截止频率2
Rp = 3; % 通带最大衰减
As = 15; % 阻带最小衰减
wp = [fp1 fp2] / (fs/2); % 归一化通带截止频率
ws = [fs1 fs2] / (fs/2); % 归一化阻带截止频率
[n, Wn] = buttord(wp, ws, Rp, As); % 计算滤波器阶数和归一化截止频率
[b, a] = butter(n, Wn); % 计算滤波器系数
freqz(b, a, [], fs); % 绘制幅频特性
title('Magnitude Response');
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
figure;
freqz(b, a, [], fs); % 绘制相频特性
title('Phase Response');
xlabel('Frequency (Hz)');
ylabel('Phase (rad)');
figure;
zplane(b, a); % 绘制零极点分布图
title('Pole Zero Plot');
H = tf(b, a, 1/fs); % 系统传递函数式
```
阅读全文