matlab 带阻滤波器代码
时间: 2023-10-16 09:02:50 浏览: 111
MATLAB 中可以使用 `fir1` 函数来设计带阻滤波器。`fir1` 函数用于设计一阶和高阶 FIR 滤波器,可以指定不同的滤波器类型和滤波器系数。
下面是一个使用 `fir1` 函数设计带阻滤波器的示例代码:
```matlab
% 指定滤波器参数
fs = 1000; % 采样频率
f1 = 50; % 停止带频率1
f2 = 150; % 停止带频率2
f3 = 250; % 通带频率1
f4 = 350; % 通带频率2
rp = 1; % 通带波纹
rs = 40; % 停止带衰减
% 计算滤波器阶数
f_cutoff = [f1 f2]/(fs/2); % 停止频带边界
f_pass = [f3 f4]/(fs/2); % 通带边界
n = fir1('equiripple', 50, f_cutoff, 'stop', 'noscale');
% 生成原始信号
t = 0:1/fs:1;
x = cos(2*pi*100*t) + cos(2*pi*200*t) + cos(2*pi*300*t);
% 过滤信号
y = filter(n, 1, x);
% 绘制原始信号和滤波后的信号
subplot(2,1,1);
plot(t, x);
title('原始信号');
xlabel('时间(秒)');
ylabel('幅值');
subplot(2,1,2);
plot(t, y);
title('滤波后的信号');
xlabel('时间(秒)');
ylabel('幅值');
```
此代码中,我们使用了采样频率为 1000Hz,设计了一个带阻滤波器,通带频率为 250-350Hz,停止带频率为 50-150Hz,通带波纹为 1dB,停止带衰减为 40dB。然后,生成了一个包含三个正弦波的原始信号,并使用 `filter` 函数将原始信号通过滤波器进行滤波。最后,绘制了原始信号和滤波后的信号。
阅读全文