用matlab写一段巴特沃斯滤波器的代码
时间: 2024-03-13 16:24:59 浏览: 84
labview设计的巴特沃斯滤波器,参数可自由选择。读取TXT文件数据,显示滤波先后的波形及频谱。labview代码中结合了matlab代码
5星 · 资源好评率100%
% 巴特沃斯滤波器
% 设计一个低通滤波器,截止频率为100Hz,通带最大衰减为1dB,阻带最小衰减为30dB
% 采样率为1000Hz,信号为10Hz的正弦波加上50Hz的噪声
fs = 1000; % 采样率
fc = 100; % 截止频率
Rp = 1; % 通带最大衰减
Rs = 30; % 阻带最小衰减
% 计算滤波器阶数和截止频率
[n, Wn] = buttord(fc/(fs/2), (fc-10)/(fs/2), Rp, Rs);
% 设计滤波器
[b, a] = butter(n, Wn);
% 生成信号
t = 0:1/fs:1-1/fs; % 时间向量
x = sin(2*pi*10*t) + 0.1*sin(2*pi*50*t); % 10Hz正弦波加上50Hz噪声
% 滤波
y = filter(b, a, x);
% 绘图
subplot(2,1,1);
plot(t, x); % 原始信号
title('原始信号');
xlabel('时间(秒)');
ylabel('幅值');
subplot(2,1,2);
plot(t, y); % 滤波后信号
title('滤波后信号');
xlabel('时间(秒)');
ylabel('幅值');
阅读全文