带通滤波器matlab程序
时间: 2023-11-07 21:05:52 浏览: 214
以下是一个简单的带通滤波器的 Matlab 程序:
```matlab
% 设计一个带通滤波器
% 参数
f1 = 50; % 通带低频边界
f2 = 200; % 通带高频边界
fs = 1000; % 采样频率
N = 1000; % FIR 滤波器的阶数
% 计算归一化的频率点
w1 = 2*f1/fs;
w2 = 2*f2/fs;
% 计算理想的频率响应
Hd = zeros(1,N+1);
for n = 0:N
if n == N/2
Hd(n+1) = (w2-w1)/pi;
else
Hd(n+1) = (sin(w2*(n-N/2))-sin(w1*(n-N/2)))/(pi*(n-N/2));
end
end
% 使用 Hamming 窗口将理想频率响应转换为实际频率响应
w = hamming(N+1)';
H = Hd.*w;
% 将实际频率响应转换为 FIR 滤波器系数
b = H;
% 绘制滤波器的幅频响应和相频响应
[H,f] = freqz(b,1,1024,fs);
figure;
subplot(2,1,1);
plot(f,20*log10(abs(H)));
title('Amplitude Response');
ylabel('Magnitude (dB)');
grid on;
subplot(2,1,2);
plot(f,angle(H));
title('Phase Response');
xlabel('Frequency (Hz)');
ylabel('Phase (rad)');
grid on;
```
阅读全文