matlab如何进行低通滤波?
发布网友
发布时间:2022-04-27 00:22
我来回答
共2个回答
热心网友
时间:2022-06-21 15:42
楼主你好
滤波要先设计滤波器,b,a代表滤波器设计的参数。一般可以使用巴特沃斯滤波器。
例如低通滤波器的设计代码为:
data
=
importdata('t2.txt');
Time
=
data(:,1);
SA
=
data(:,2);
dtt=diff(Time);
dt=sum(dtt)/length(dtt);
Fs=round(1/dt);%采样频率
Wp
=
5/(Fs/2);
%通带截止频率,这个自定大致定义
Ws
=
10/(Fs/2);%阻带截止频率,这个自定大致定义
Rp
=
2;
%通带内的衰减不超过Rp,这个自定大致定义
Rs
=
40;%阻带内的衰减不小于Rs,这个自定大致定义
[n,Wn]
=
buttord(Wp,Ws,Rp,Rs);%巴特沃斯数字滤波器最小阶数选择函数
[b,a]
=
butter(n,Wn);%巴特沃斯数字滤波器
[h,w]=freqz(b,a,512,Fs);
%计算滤波器的频率响应
plot(w,abs(h))%,'LineWidth',1绘制滤波器的幅频响应图
%**************************************************************************
%对输入的信号进行滤波
RollAf=filtfilt(b,a,RollA);%filtfilt这个函数是0相位滤波,没有偏移。filter有偏移。
**************************************************************************
%%
滤波结果绘图
figure
subplot(2,2,1)
H=plot(Time,RollA,Time,RollAf,'r--');%,'linewidth',3
set(H(2),'linewidth',2)
其中;Wp,Ws是一元向量时,则设计的是低通或高通滤波器,若Wp,Ws是二元向量,则设计带通或带阻滤波器。
可以使用fft函数。
希望对你有帮助,
热心网友
时间:2022-06-21 15:42
首先要知道你的采样频率
因为设计滤波器时的频率都是归一化的,比如你的采样频率是100hz,而要10hz低通,则wn=0.2=10*2/100;
可以用fir滤波器
b=fir1(n,wn,‘low’),其中n要自己试着确定,是滤波器阶数。
对于输入信号x
滤波后的y=filter2(b,x),b就是上面的b
ok?
用iir滤波器的话还可以准确的定阶数,自己多看看吧。