失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 双线性变换法MATLAB实现巴特沃斯低通滤波器

双线性变换法MATLAB实现巴特沃斯低通滤波器

时间:2020-03-16 08:59:00

相关推荐

双线性变换法MATLAB实现巴特沃斯低通滤波器

实验名称数字信号处理实验4实验(实习)日期12.13得分 指导老师

学院电信院专业电子信息工程年级班次 姓名 学号8327

1.实验目的

掌握利用MATLAB求滤波器阶数和自然截至频率;掌握利用MATLAB求分子、分母多项式系数;掌握利用MATLAB改变滤波器的截止频率;掌握利用MATLAB将模拟滤波器转化成数字滤波器。

2.实验内容

(1)试用双线性变换法设计一个数字低通滤波器,给定技术指标fp=100Hz,fs=300Hz,αp=3dB, αs=20dB,采样频率fs=1000Hz。

3.实验步骤和实验结果

①分析:根据给定的技术指标fp、fs、αp、αs和fs,可以算出通带和阻带的Ωp和Ωs。通过buttord()函数求得阶数和截止频率,函数为[n,wn]=buttord(wap,was,rp,rs,'s'),其中n为滤波器阶数,wn为截止频率;然后使用buttap()函数求得极点、零点和增益,使用zp2tf()函数,将已知的极、零点和增益转换为传递函数的形式,之后使用lp2lp()函数将截止频率为1rad/s的模拟低通滤波器变换成截止频率为wap的模拟低通滤波器:最后使用bilinear()函数,根据双线性变换法将模拟滤波器转为数字滤波器,最后使用freqz()函数求得离散系统的频响特性。

clc;clear;%参数设置f_p=100; %通带上截止频率f_st=300; %阻带下截止频率R_p=3; %通带允许的最大衰减R_st=20; %阻带允许的最小衰减f_s=1000; %采样频率T_s=1/f_s; %采样间隔%归一化为数字角频率参数s_p=2*pi*f_p/f_s;s_st=2*pi*f_st/f_s;%变换成模拟低通滤波器的角频率参数C=2/T_s ;S_p=C*tan(s_p/2);S_st=C*tan(s_st/2); %模拟低通滤波器角频率参数归一化处理lamda_p=S_p/S_p;lamda_st=S_st/S_p;%归一化模拟低通滤波器的转移函数[N,Wn]=buttord(S_p,S_st,R_p,R_st,'s'); %求阶数和截止频率%选择模拟巴特沃斯低通滤波器的最小阶数[z,p,k]=buttap(N);%求极点、零点和增益[Bp,Ap]=zp2tf(z,p,k);%将已知的极、零点和增益转换为传递函数的形式%将截止频率为1rad/s的模拟低通滤波器变换成截止频率为Omega_p的模拟低通滤波器[b,a] = lp2lp(Bp,Ap,Wn);%根据双线性变换法将模拟滤波器转为数字滤波器 [bz,az]=bilinear(b,a,f_s);%滤波效果测试 N=1000t=[0:N-1]*T_s ;f1=20;f2=300;f3=500;x1=2*sin(2*pi*f1*t);x2=2*2*sin(2*pi*f2*t);x3=2*3*sin(2*pi*f3*t);x=x1+x2+x3;fft_x=fft(x);X_mag=fftshift(abs(fft_x))/N ;X_ang=fftshift(angle(fft_x));delta_f=f_s/N;f=(-N/2:N/2-1)*delta_f;%滤波lp_x=filter(bz,az,x);lp_fft_x=fft(lp_x);lp_X_mag=fftshift(abs(lp_fft_x))/N ;lp_X_ang=fftshift(angle(lp_fft_x));%显示figure(1);freqz(bz,az);title('低通滤波器幅度谱和相位谱');figure(2);subplot(3,1,1);plot(t,x);title('原信号时域波形');xlabel('t(s)');subplot(3,1,2);plot(f,X_mag);title('原信号幅度谱');xlabel('f(hz)');subplot(3,1,3);plot(f,X_ang);title('原信号相位谱');xlabel('f(hz)');figure(3);subplot(3,1,1);plot(t,lp_x);title('滤波后信号时域波形');xlabel('t(s)');subplot(3,1,2);plot(f,lp_X_mag);title('滤波后信号幅度谱');xlabel('f(hz)');subplot(3,1,3);plot(f,lp_X_ang);title('滤波后信号相位谱');xlabel('f(hz)');

结果:

实验小结

本次实验主要掌握了如何用MATLAB实现低通滤波器,实验过程中要注意数字角频率和模拟角频率的转化,并且采用双线性变换法将模拟滤波器转化为数字滤波器。模拟滤波器设计的主要流程总结为:1)根据信号处理的要求确定设计指标;2)选择滤波器类型;3)计算滤波器阶数。同时本实验也用到了前几节课所学的滤波、显示图像等知识,需要进行融会贯通。

至此四次数字信号处理四次实验已经结束,通过这四次实验,我对MATLAB的熟悉程度有所加深,从第一次做实验不知道如何切换MATLAB的运行环境,到现在掌握了一些编程方法和函数的使用,还是很有收获的。也在实验过程中深深意识到了自己编程水平的不足,常常需要到CSDN等博客平台上寻求帮助,虽然作为一名电信人,可能接触到的更多的是硬件,但是对基础算法和编程思想的掌握和熟练程度还是需要进一步精进的。

路漫漫其修远兮,继续加油吧!

如果觉得《双线性变换法MATLAB实现巴特沃斯低通滤波器》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。