本文主要是介绍matlab 巴特沃斯滤波,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
低通滤波
fs=30; %采样频率
N=300; %N/fs 秒数据
n=0:N-1;
t=n/fs; %时间if 0
fl = 0.4; %低频
fh = 5; %高频
s=cos(2*pi*fl*t)+cos(2*pi*fh*t); %s是0.4Hz和5Hz信号叠加,低通截止频率是1Hz
subplot(121);plot(t,s);
title('输入信号');xlabel('t/s');ylabel('幅度');
sfft=fft(s);
subplot(122);
plot((1:length(sfft)/2)*fs/length(sfft),2*abs(sfft(1:length(sfft)/2))/length(sfft));
title('信号频谱');xlabel('频率/Hz');ylabel('幅度');
%设计低通滤波器,截止频率为1
if 0
Wp=1/fs;Ws=2/fs; %截止频率为1Hz,阻带截止频率为2Hz
%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wn
[n,Wn]=buttord(Wp,Ws,1,50); %阻带衰减大于50db,通带纹波小于1db
else
n=4;
Wn=1/(fs/2);
end
%设计Butterworth低通滤波器
[a,b]=butter(n,Wn);
[h,f]=freqz(a,b,'whole',fs); %求数字低通滤波器的频率响应
f=(0:length(f)-1*fs/length(f)); %进行对应的频率转换
figure;
plot(f(1:le
这篇关于matlab 巴特沃斯滤波的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!