一、matlab如何进行低通滤波
滤波要先设计滤波器,b,a代表滤波器设计的参数。一般可以使用巴特沃斯滤波器。
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低通滤波器的内容到此结束,希望对大家有所帮助。