带通滤波器matlab
时间: 2023-06-13 07:04:50 浏览: 84
以下是一个简单的带通滤波器的 MATLAB 代码示例:
```matlab
% 设计一个带通滤波器
fs = 1000; % 采样频率
f1 = 50; % 通带下限频率
f2 = 150; % 通带上限频率
Wp = [f1 f2] / (fs/2); % 归一化通带频率
Rp = 1; % 通带最大衰减
Rs = 40; % 阻带最小衰减
[n, Wn] = buttord(Wp, Ws, Rp, Rs); % 计算巴特沃斯滤波器阶数和截止频率
[b, a] = butter(n, Wn, 'bandpass'); % 求取巴特沃斯滤波器系数
% 使用带通滤波器
t = 0:1/fs:1; % 生成信号的时间轴
x = sin(2*pi*100*t) + sin(2*pi*200*t) + sin(2*pi*300*t); % 生成复合信号
y = filter(b, a, x); % 使用带通滤波器滤波
% 绘制滤波前后信号的频谱图
figure;
subplot(2,1,1);
plot(t, x);
title('原始信号');
subplot(2,1,2);
f = (-fs/2:fs/length(y):fs/2-fs/length(y)); % 生成频率轴
Y = fftshift(abs(fft(y))); % 信号的频谱
plot(f, Y);
title('带通滤波后信号的频谱图');
```
在这个例子中,我们使用巴特沃斯滤波器设计了一个带通滤波器,其通带为 50 Hz 到 150 Hz,阻带最小衰减为 40 dB。我们使用 `filter` 函数将信号滤波,并使用 `fft` 函数计算滤波后信号的频谱,最终绘制出了滤波前后信号的频谱图。
阅读全文