设计 butterworh 型 IIR 数字低通滤波器,滤波器技术指标如下:通带中允许的最大衰减为 3dB,阻 带内的最小衰减为 30dB,通带截止频率为 2000Hz,阻带截止频率上限值为 4000Hz,采样频率为 10000Hz,编写 MATLAB 程序 (调用 buttord 和 butter 函数)求出阶次 N、Wc 及系统函数 H(z)的系数,并画出幅频特性曲线。
时间: 2024-03-07 07:51:48 浏览: 111
IIR数字低通滤波器设计及DSP实现.pdf-综合文档
好的,根据您的要求,我来为您解答这个问题。
首先,我们需要使用 butterworth 型 IIR 数字低通滤波器设计。在这个问题中,我们需要设计一个通带截止频率为 2000Hz,阻带截止频率上限值为 4000Hz,通带中允许的最大衰减为 3dB,阻带内的最小衰减为 30dB 的数字低通滤波器。根据 butterworth 型 IIR 数字低通滤波器的设计步骤,我们需要进行以下步骤:
1. 计算滤波器的阶次 N 和通带截止频率 Wc。在这个问题中,我们可以使用 MATLAB 中的 buttord 函数来计算滤波器的阶次 N 和通带截止频率 Wc,代码为:
Wp = 2000 / (10000/2); % 通带截止频率,归一化到采样频率的一半
Ws = 4000 / (10000/2); % 阻带截止频率上限值,归一化到采样频率的一半
Rp = 1; % 通带最大衰减,单位为 dB
Rs = 30; % 阻带最小衰减,单位为 dB
[N, Wc] = buttord(Wp, Ws, Rp, Rs); % 计算阶次和通带截止频率
其中,Wp 是通带截止频率,Ws 是阻带截止频率上限值,Rp 是通带最大衰减,Rs 是阻带最小衰减。这里我们将通带截止频率和阻带截止频率上限值都归一化到采样频率的一半,因为 MATLAB 中的 buttord 函数需要输入的是归一化后的频率。
2. 计算系统函数 H(z) 的系数。在这个问题中,我们可以使用 MATLAB 中的 butter 函数来计算系统函数 H(z) 的系数,代码为:
[b, a] = butter(N, Wc);
其中,N 和 Wc 分别是步骤 1 中计算得到的滤波器阶次和通带截止频率。
3. 绘制幅频特性曲线。我们可以使用 freqz 函数来计算滤波器的幅频特性曲线,代码为:
[H, W] = freqz(b, a);
然后,我们就可以绘制幅频特性曲线了,代码为:
plot(W/pi*(10000/2), 20*log10(abs(H)));
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
title('Magnitude Response');
grid on;
最终,我们就可以得到滤波器的阶次 N、通带截止频率 Wc 和幅频特性曲线的图像了。图像如下所示:
注意:在程序中,我们将通带截止频率和阻带截止频率上限值都归一化到采样频率的一半,这是因为 MATLAB 中的 buttord 函数和 butter 函数需要输入的是归一化后的频率。在绘制幅频特性曲线时,我们将 x 轴的频率单位从弧度/sample 转换为 Hz,这是因为在实际应用中常用的是 Hz 作为频率的单位。
阅读全文