巴特沃斯带阻滤波器(去除 50Hz 附近波形),衰减90dB的MATLAB程序示例
时间: 2024-11-08 11:11:54 浏览: 32
巴特沃思带阻滤波器是一种常用的信号处理技术,用于从信号中抑制特定频率范围内的干扰。例如,在 MATLAB 中创建一个 50Hz 衰减 90 分贝的带阻滤波器,可以使用 `butter` 函数设计滤波器系数,然后用 `filter` 函数应用到数据上。以下是一个简单的示例:
```matlab
% 设定滤波器参数
fs = 1000; % 采样率 (Hz)
f_c = 50; % 中心频率 (Hz)
order = 4; % 滤波器阶数
attenuation_db = 90; % 阻止带衰减 (dB)
% 计算截止频率
[b, a] = butter(order, [f_c/(fs/2) - 1i*(f_c + f_c*0.1)/(fs/2), f_c/(fs/2) + 1i*(f_c + f_c*0.1)/(fs/2)], 'bandstop'); % 0.1倍带宽作为过渡区
% 假设我们有一个包含噪声的信号 data
data = randn(1, length(fs)); % 创建一些随机信号作为例子
% 应用滤波器
filtered_data = filter(b, a, data);
% 检查衰减效果
freqz(b, a); % 绘制频率响应图形,查看阻带衰减是否达到预期
% 查看滤波后的信号最大值和最小值
max_amp = max(abs(filtered_data));
min_amp = min(abs(filtered_data));
% 判断衰减
if max_amp / min_amp < 10^(-attenuation_db/20)
disp(['Decay achieved to approximately ', num2str(attenuation_db), ' dB']);
else
disp('Desired attenuation not fully achieved');
end
%
阅读全文