用matlab编写程序设计数字滤波器(1)带通滤波器设计。通带100Hz--200Hz; 阻带,截止频率60 Hz和240Hz,通带允许最大衰减3dB, 阻带应达到的最小衰减30dB
时间: 2024-02-05 18:10:37 浏览: 151
matlab程序之——滤波器(带通-带阻).pdf
以下是用MATLAB代码实现带通滤波器设计的示例:
```matlab
% 设计带通滤波器
fs = 1000; % 采样频率
f1 = 100; % 通带下限频率
f2 = 200; % 通带上限频率
f3 = 60; % 阻带下限频率
f4 = 240; % 阻带上限频率
Rp = 3; % 通带最大衰减
Rs = 30; % 阻带最小衰减
% 计算数字滤波器参数
wp = [f1 f2]*2/fs;
ws = [f3 f4]*2/fs;
[n,wn] = buttord(wp,ws,Rp,Rs);
[b,a] = butter(n,wn,'bandpass');
% 绘制滤波器幅频响应曲线
[h,w] = freqz(b,a,1024,fs);
plot(w,20*log10(abs(h)))
title('带通滤波器幅频响应')
xlabel('频率 (Hz)')
ylabel('增益 (dB)')
grid on
```
解释一下代码中的参数:
- `fs`:采样频率,本例中设为1000Hz。
- `f1`和`f2`:通带的下限和上限频率,本例中设为100Hz和200Hz。
- `f3`和`f4`:阻带的下限和上限频率,本例中设为60Hz和240Hz。
- `Rp`:通带最大衰减,本例中设为3dB。
- `Rs`:阻带最小衰减,本例中设为30dB。
- `wp`和`ws`:数字滤波器的通带和阻带边界频率,根据公式可计算得到。
- `n`和`wn`:巴特沃斯滤波器的阶数和归一化截止频率,根据计算公式可得。
- `b`和`a`:数字滤波器的系数,使用`butter`函数可计算得到。
- `h`和`w`:滤波器的幅频响应,使用`freqz`函数可计算得到。
运行以上代码后,可以得到带通滤波器的幅频响应曲线。如果需要将该滤波器应用到信号上,则可以使用`filter`函数进行滤波。例如,假设有一个长度为N的信号`x`,则可以使用以下代码进行滤波:
```matlab
y = filter(b,a,x);
```
其中,`y`为滤波后的信号。
阅读全文