七月网

matlab低通滤波器(matlab低通滤波器函数)

七月网4120

一、matlab如何进行低通滤波

滤波要先设计滤波器,b,a代表滤波器设计的参数。一般可以使用巴特沃斯滤波器。

matlab低通滤波器(matlab低通滤波器函数)

data= importdata('t2.txt');

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有偏移。

**************************************************************************

H=plot(Time,RollA,Time,RollAf,'r--');%,'linewidth',3

set(H(2),'linewidth',2)

其中;Wp,Ws是一元向量时,则设计的是低通或高通滤波器,若Wp,Ws是二元向量,则设计带通或带阻滤波器。

二、帮忙编一个matlab的低通滤波器的程序

%归一化模拟切比雪夫I型低通滤波器的设计

Wp=2*pi*1000;Ws=2*pi*1500;rp=3;rs=30;%设计滤波器的参数

wp=1;ws=Ws/Wp;%频带变换得到归一化滤波器

[N,wc]=cheb1ord(wp,ws,rp,rs,'s');%计算滤波器阶数和3dB截止频率

[z,p,k]=cheb1ap(N,rp);%计算归一化滤波器的零极点

[b,a]=zp2tf(z,p,k);%计算归一化滤波器系统函数的系数

[h0,w0]=freqs(b,a,w0);%求频率响应

plot(w0,20*log10(abs(h0)),'k');

title('归一化模拟且比雪夫I型低通滤波器');

xlabel('频率f/Hz');ylabel('幅度/dB');grid;

%一般低通切比雪夫低通滤波器的设计

[B,A]=lp2lp(b,a,Wp);%将归一化滤波器转换为一般模拟滤波器

plot(w1/(2*pi),20*log10(abs(h1)),'k');

title('一般模拟且比雪夫I型低通滤波器');

xlabel('频率f/Hz');ylabel('幅度/dB');grid;

%冲激响应不变法设计低通巴特沃斯数字滤波器

rp1=3;rs1=30;%设计滤波器的参数

[N1,Wn]=cheb1ord(Wp,Ws,rp1,rs1,'s')%计算滤波器阶数

[b1,a1]=cheby1(N1,rp1,Wn,'s');%样本AF的系数函数的分子分母系数

[bz,az]=impinvar(b1,a1,Fs);%冲激响应不变法从AF到DF变换

[C1,B1,A1]=dir2par(bz,az)%直接形式转换为并联型

[H,f]=freqz(bz,az);%绘制数字滤波器的幅频特性和相频特性

[db,mag,pha,grd,f]=freqz_m(bz,az);%扩展函数检验滤波器的其他特性

title('冲激响应不变法设计低通切比雪夫I型数字滤波器');

xlabel('角频率w/pi');ylabel('振幅/dB');

%用设计好的滤波器对信号进滤波处理

f1=500;f2=4000;%输入信号的频率

dt=1/Fs;n=0:N-1;t=n*dt;%采样间隔和时间序列

x=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t);%输入信号

subplot(2,1,1),plot(t,x),title('输入信号');

y=filtfilt(bz,az,x);%用滤波器进行滤波处理

y1=filter(bz,az,x);%进行滤波处理

subplot(2,1,2),plot(t,y,t,y1,':'),title('输出信号');xlabel('时间/s');

legend('filtfilt','filter')%加图例

function[db,mag,pha,grd,w]=freqz_m(b,a)

[H,w]=freqz(b,a,1000,'whole');

db=20*log10((mag+eps)/max(mag));

K=floor(N/2);B=zeros(K,2);A=zeros(K,3);

[Brow,Arow]=residuez(Brow,Arow,[]);

[Brow,Arow]=residuez(r(N-1),p(N-1),[]);

B(K,:)=[real(Brow)0];A(K,:)=[real(Arow)0];

[Brow,Arow]=residuez(Brow,Arow,[]);

if(abs(p1(i)-p2(j))<0.0001)

三、求用matlab实现fir滤波器(低通、高通,带通)

1、%估算得到butterworth低通滤波器的最小阶数n和3db截止频率wc

2、[a,b]=butter(n,wc);%设计butterworth低通滤波器

3、[h,f]=freqz();%求数字低通滤波器的频率响应

4、subplot(221);%图形显示分割窗口

5、plot(f,abs(h));%绘制butterworth低通滤波器的幅频响应图

6、title(巴氏低通滤波器'');

7、sf=filter(a,b,s);%叠加函数s经过低通滤波器以后的新函数

8、plot(t,sf);%绘制叠加函数s经过低通滤波器以后的时域图形

9、xlabel('时间(seconds)');

10、sf=fft(sf,256);%对叠加函数s经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换

11、plot());%绘制叠加函数s经过低通滤波器以后的频谱图

12、title('低通滤波后的频谱图');

13、%估算得到butterworth高通滤波器的最小阶数n和3db截止频率wc

14、[a,b]=butter(n,wc,'high');%设计butterworth高通滤波器

15、[h,f]=freqz();%求数字高通滤波器的频率响应

16、plot(f,abs(h));%绘制butterworth高通滤波器的幅频响应图

17、title('巴氏高通滤波器');

18、sf=filter();%叠加函数s经过高通滤波器以后的新函数

19、plot(t,sf);;%绘制叠加函数s经过高通滤波器以后的时域图形

20、xlabel('time(seconds)');

21、ylabel('timewaveform');

22、plot());%绘制叠加函数s经过高通滤波器以后的频谱图

23、title('高通滤波后的频谱图');

24、%估算得到butterworth带通滤波器的最小阶数n和3db截止频率wc

25、[a,b]=butter(n,wc);%设计butterworth带通滤波器

26、[h,f]=freqz();%求数字带通滤波器的频率响应

27、plot(f,abs(h));%绘制butterworth带通滤波器的幅频响应图

28、title('butterbandpassfilter');

29、sf=filter(a,b,s);%叠加函数s经过带通滤波器以后的新函数

30、plot(t,sf);%绘制叠加函数s经过带通滤波器以后的时域图形

31、xlabel('time(seconds)');

32、ylabel('timewaveform');

33、sf=fft();%对叠加函数s经过带通滤波器以后的新函数进行256点的基—2快速傅立叶变换

34、plot('));%绘制叠加函数s经过带通滤波器以后的频谱图

35、title('带通滤波后的频谱图');

关于matlab低通滤波器的内容到此结束,希望对大家有所帮助。