带通butterworth滤波器matlab应用代码
时间: 2023-07-09 09:04:31 浏览: 86
以下是一个带通Butterworth滤波器的MATLAB应用代码示例:
```matlab
% 定义滤波器参数
fs = 1000; % 采样率
fcuts = [50 150]; % 截止频率
mags = [0 1 0]; % 通带/阻带增益
devs = [0.05 0.01 0.05]; % 通带/阻带最大允许波动
[n, Wn, beta, ftype] = kaiserord(fcuts/(fs/2), mags, devs); % 计算滤波器阶数和窗函数系数
b = fir1(n, Wn, ftype, kaiser(n+1, beta)); % 计算滤波器系数
% 使用滤波器进行信号处理
data = load('data.mat'); % 载入待处理的数据
x = data.x;
y = filter(b, 1, x); % 使用滤波器对信号进行滤波
% 绘制滤波前后的信号波形
t = (0:length(x)-1)/fs; % 时间轴
subplot(2,1,1);
plot(t, x);
title('原始信号');
xlabel('时间 (秒)');
ylabel('幅值');
subplot(2,1,2);
plot(t, y);
title('滤波后信号');
xlabel('时间 (秒)');
ylabel('幅值');
```
在这个示例中,我们使用kaiserord函数计算了Butterworth滤波器的阶数和窗函数系数,使用fir1函数计算了滤波器系数,并使用filter函数将滤波器应用于信号。最后,我们绘制了原始信号和滤波后信号的波形以进行比较。
阅读全文