巴特沃斯带通滤波器matlab代码
时间: 2023-07-09 14:19:33 浏览: 118
以下是巴特沃斯带通滤波器在Matlab中的示例代码:
```matlab
% 设计巴特沃斯带通滤波器
fs = 1000; % 采样频率
f1 = 20; % 通带下截止频率
f2 = 200; % 通带上截止频率
Wp = [2*f1/fs, 2*f2/fs]; % 归一化通带截止频率
Rp = 3; % 通带最大衰减量(dB)
Rs = 40; % 阻带最小衰减量(dB)
[n, Wn] = buttord(Wp, Ws, Rp, Rs); % 计算滤波器的阶数和截止频率
[b, a] = butter(n, Wn, 'bandpass'); % 计算滤波器系数
% 应用巴特沃斯带通滤波器
x = randn(1, 1000); % 生成随机信号
y = filter(b, a, x); % 滤波处理
% 绘制滤波前后的信号波形图
t = 0:1/fs:(length(x)-1)/fs;
figure;
subplot(2,1,1);
plot(t, x);
xlabel('Time(s)');
ylabel('Amplitude');
title('Original Signal');
subplot(2,1,2);
plot(t, y);
xlabel('Time(s)');
ylabel('Amplitude');
title('Filtered Signal');
```
在该示例中,我们首先指定了采样频率和通带下、上截止频率,然后计算了滤波器的阶数和截止频率,并使用`butter`函数计算出滤波器系数。最后,我们生成一个随机信号并通过`filter`函数进行滤波处理,最终绘制了滤波前后的信号波形图。
阅读全文