一、背景
背景同文章并联带阻滤波器&带通滤波器对幅值和相位的影响(IIR)-CSDN博客
本文与前文的差异是使用FIR滤波器。
二、matlab仿真
使用matlab的fdatool设计滤波器,并导出参数到工作空间。
close all;% 假设 FIR 滤波器的系数已导出到工作空间
% FIR 带通滤波器系数
b_bp = FIRpass; % 带通滤波器系数
a_bp = 1; % FIR 滤波器分母为 1% FIR 带阻滤波器系数
b_bs = FIRstop; % 带阻滤波器系数
a_bs = 1; % FIR 滤波器分母为 1% 设置采样频率和频率分辨率
fs = 48000; % 采样频率
N = 4096 * 32; % 频率点数,增加分辨率% 计算频率响应
[H_bp, f] = freqz(b_bp, a_bp, N, fs); % 带通滤波器频率响应
[H_bs, ~] = freqz(b_bs, a_bs, N, fs); % 带阻滤波器频率响应% 并联滤波器综合频率响应
H_combined = H_bp + H_bs; % 复数形式直接相加% 绘制幅度响应对比
figure;
plot(f, 20*log10(abs(H_bp)), 'b', 'LineWidth', 1.5); hold on;
plot(f, 20*log10(abs(H_bs)), 'g', 'LineWidth', 1.5);
plot(f, 20*log10(abs(H_combined)), 'r', 'LineWidth', 1.5);
title('幅度响应对比');
xlabel('频率 (Hz)');
ylabel('幅度 (dB)');
legend('带通滤波器', '带阻滤波器', '组合响应');
grid on;% 绘制相位响应对比
figure;
plot(f, unwrap(angle(H_bp)), 'b', 'LineWidth', 1.5); hold on;
plot(f, unwrap(angle(H_bs)), 'g', 'LineWidth', 1.5);
plot(f, unwrap(angle(H_combined)), 'r', 'LineWidth', 1.5);
title('相位响应对比');
xlabel('频率 (Hz)');
ylabel('相位 (rad)');
legend('带通滤波器', '带阻滤波器', '组合响应');
grid on;
幅度影响:在5000Hz有衰减的影响
相位影响:红色线斜率是定值,说明所有频率分量的延迟相等。