1、带通滤波器设计 信号与系统 带通滤波器设计 学生姓名: 李吉凯 学 号: 1400309003 班级:14光伏 1.设计目的: 设计一种带通滤波器并对信号进行滤波。一个理想的带通滤波器应该有平稳的通带,同时限制所有通带外频率的波通过。要求做到:1).了解MATLAB的信号处理技术;2).掌握带通滤波器的特点;3).掌握带通滤波器的设计和滤波处理技术。 2.设计内容和要求(包括原始数据、技
2、术参数、条件、设计要求等): 产生一个连续信号,包含低频、中频、高频分量,对其进行采样,进行频谱分析,并设计带通滤波器对信号进行滤波处理,观察滤波后信号的频谱 3.设计工作任务与工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕: 1).熟悉有关采样,频谱分析的理论知识,对信号作频谱分析; 2).熟悉有关滤波器设计理论知识,选择合适的滤波器技术指标,设计带通滤波器对信号进行滤波,对比分析滤波前后信号的频谱; 3).实现信号频谱分析和滤波等有关Matlab函数; 4).写出基本原理,有关程序,得到的图表,结果分析,总结; 5).递交课程设计说明书。
3、 设 计 任 务 书 目录 设计目的要求……………………………………………………………………7 设计原理…………………………………………………………………………7 设计内容…………………………………………………………………………8 1. 连续输入信号产生………………………………………………………8 2.抽样、频谱分析…………………………………………………………11 3.带通滤波器设计…………………………………………………………12 4.滤波结果…………………………
4、………………………………………13 5.总程序……………………………………………………………………14 使用函数说明 …………………………………………………………………17 结果分析 ………………………………………………………………………17 设计心得 ………………………………………………………………………17 一、设计目的要求 要求产生一个连续信号,包含低频、中频、高频分量,对其进行采样,进行频谱分析,并设计带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。 1.熟悉有关采样,频谱分析的理论知识,对信
5、号作频谱分析; 2.熟悉有关滤波器设计理论知识,选择合适的滤波器技术指标,设计带通滤波器对信号进行滤波,对比分析滤波前后信号的频谱; 3.实现信号频谱分析和滤波等有关Matlab函数; 4.写出基本原理,有关程序,得到的图表,结果分析,总结; 二、设计原理 1.利用MATLAB软件产生一个包含低频、中频、高频分量的连续信号。 2.对信号进行抽样,进行频谱分析。 (1)时域采样(奈奎斯特采样)定理:为了避免产生混叠现象,能从抽样信号无失真地恢复出原信号,抽样频率必须大于或等于信号频谱最高频率的两倍。本设计中信号最高频率是300Hz,抽样频率采用1200Hz。 (2)频谱分析:频谱
6、分析是指对信号进行频域谱的分析,观察其频域的各个分量的功率大小,其理论基础是傅立叶变换,现在一般采用数字的方法,也就是将时域信号数字化后做FFT,可以得到频域的波形。 3.带通滤波器滤波的工作原理 现代生活中,为了滤除谐波干扰,获得所需要的高精度的模拟信号,经常要用到滤波器对信号进行滤波。典型的模拟滤波器有巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器和椭圆(Ellipse)滤波器等。其中,巴特沃斯滤波器又叫最平坦响应滤波器,顾名思义,它的响应最为平坦,通带内没有波纹,其频率响应在通带和阻带中都是单调的,且在靠近零频处最平坦,而在趋向阻带时衰减单调增大,巴特
7、沃斯响应能够最大化滤波器的通带平坦度。该响应非常平坦,非常接近DC信号,然后慢慢衰减至截止频率点为-3dB,最终逼近-20ndB/decade的衰减率,其中n为滤波器的阶数。巴特沃斯滤波器特别适用于低频应用,其对于维护增益的平坦性来说非常重要。本次课程设计将使用巴特沃斯带通滤波器对信号进行滤波。滤波器的结构框图如下图1 所示: 采样 (1200HZ) 连续混合 信号 带通滤波器 输出 图1 滤波器的结构框图 相对于低通滤波器的通带频率为(0,w),带通滤波器的通带频率问为(w1,w2),带通滤波器是指某一频率范围内的频率分量能通过,但将其他范围的频率分量衰减到极低水平的
8、滤波器,信号通过线性系统后,其输出就是输入信号和系统冲激响应的卷积。从频域分析来看,信号通过线性系统后,输出信号的频谱将是输入信号的频谱与系统传递函数的乘积。除非输入信号为常数,否则输出信号的频谱将不同于输入信号的频谱,信号中某些频率成分较大的模滤波后这些频率成分将得到加强,而另外一些频率成分很小甚至为零的模,这部分频率分量将被削弱或消失。因此,带通滤波系统的作用相当于对输入信号的频谱进行加权。带通滤波器的频率响应图如下图2。 图2 带通滤波器的频率响应图 三、设计内容 本次设计中利用双线性变换法和buttord、butter这两个函数直接设计数字滤波器。设定巴特沃斯带通数字滤
9、波器指标:通带范围为:150-350Hz,阻带上限为:400HZ,阻带下限为100Hz,通带最大衰减=2dB,阻带最小衰减为=30dB,采样频率为fsa=1200Hz。设计步骤为: 1. 首先产生一个连续输入信号,包含中频(f=200Hz),高频(f=500Hz),低频(f=30Hz)分量。 (1)程序代码 f1=30; f2=200; f3=500; t=(1:100)/2000; x1=sin(2*pi*t*f1); figure(1);subplot(2,1,1);plot(x1); %绘制x1(t)的图形 xlabel('t');ylabel('
10、x1(t)'); title('连续信号'); grid; x2=sin(2*pi*t*f2); subplot(2,1,2);plot(x2); %绘制x2(t)的图形 xlabel('t');ylabel('x2(t)'); title('连续信号'); grid; x3=sin(2*pi*t*f3); figure(2);subplot(2,1,1);plot(x3); %绘制x3(t)的图形 xlabel('t');ylabel('x3(t)'); title('连续信号'); grid; x=
11、sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3); subplot(2,1,2);plot(x); %绘制x(t)的图形 xlabel('t');ylabel('x(t)'); title('连续信号'); grid; (2)程序运行结果如图3: 图3 包含低频、中频、高频分量的连续信号的波形图 2. 对连续输入信号进行采样,进行频谱分析。 (1)程序代码: n=[1:100];t=n/2000 X=fft(x,512);w=(0:255)/256*1000; x=sin(2*
12、pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3); figure(3);stem(x); %绘制x(n)的图形 xlabel('n');ylabel('x(n)'); title('数字信号'); grid; figure(4);plot(w,abs([X(1:256)])); %绘制频谱图 xlabel('Hz');ylabel('频率响应幅度'); title('频谱图'); grid; (2)程序运行结果如图4、图5: 图4 连续信号抽样结果波形图 图
13、5 连续信号进行抽样后的频谱图 3.根据设定要求设计带通滤波器。 (1)程序代码: fp=[100 300];fs=[50 350]; ap=2;as=30; fsa=2000; wp=fp/fsa*2;ws=fs/fsa*2; [n,wn]=buttord(wp,ws,ap,as); [B,A]=butter(n,wn); [H,w]=freqz(B,A,512); figure(5);subplot(2,1,1); plot(w*2000/(2*pi),abs(H)); %绘制带通频谱图 xlabel('Hz');ylabel('频率响
14、应幅度'); title('带通滤波器'); grid; subplot(2,1,2);plot(w/pi,angle(H)); xlabel('Hz');ylabel('angel'); title('相位特性'); grid; (2)程序运行结果如图6: 图6 带通滤波器的频率响应和相位特性曲线 4. 对信号进行滤波 (1)程序代码: y=filter(B,A,x); figure(8);subplot(2,1,1);plot(y); xlabel('t');ylabel('x(t)'); title('连续信号'); grid; Y=fft(y,512
15、);w=(0:255)/256*1000; subplot(2,1,2);plot(w,abs([Y(1:256)])); %绘制频谱图 xlabel('Hz');ylabel('频率响应幅度'); title('频谱图'); grid; (2)程序运行结果如图7: 图7 滤波后信号时域和频域波形图 5.总程序代码 f1=30; f2=200; f3=500; t=(1:100)/2000; x1=sin(2*pi*t*f1); figure(1);subplot(2,1,1);plot(x1); %绘制x(t)的图形
16、xlabel('t');ylabel('x1(t)'); title('连续信号'); grid; x2=sin(2*pi*t*f2); subplot(2,1,2);plot(x2); %绘制x2(t)的图形 xlabel('t');ylabel('x2(t)'); title('连续信号'); grid; x3=sin(2*pi*t*f3); figure(2);subplot(2,1,1);plot(x3); %绘制x3(t)的图形 xlabel('t');ylabel('x3(t)'); title
17、'连续信号'); grid; x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3); subplot(2,1,2);plot(x); %绘制x(t)的图形 xlabel('t');ylabel('x(t)'); title('连续信号'); grid; n=[1:100];t=n/2000 X=fft(x,512);w=(0:255)/256*1000; x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3); figure(3);stem(x);
18、 %绘制x(n)的图形 xlabel('n');ylabel('x(n)'); title('数字信号'); grid; figure(4);plot(w,abs([X(1:256)])); %绘制频谱图 xlabel('Hz');ylabel('频率响应幅度'); title('频谱图'); grid; fp=[100 300];fs=[50 350]; ap=2;as=30; fsa=2000; wp=fp/fsa*2;ws=fs/fsa*2; [n,wn]=buttord(
19、wp,ws,ap,as); [B,A]=butter(n,wn); [H,w]=freqz(B,A,512); figure(5);subplot(2,1,1); plot(w*2000/(2*pi),abs(H)); %绘制带通频谱图 xlabel('Hz');ylabel('频率响应幅度'); title('带通滤波器'); grid; subplot(2,1,2);plot(w/pi,angle(H)); xlabel('Hz');ylabel('angel'); title('相位特性'); grid; y=filte
20、r(B,A,x); figure(8);subplot(2,1,1);plot(y); xlabel('t');ylabel('x(t)'); title('连续信号'); grid; Y=fft(y,512);w=(0:255)/256*1000; subplot(2,1,2);plot(w,abs([Y(1:256)])); %绘制频谱图 xlabel('Hz');ylabel('频率响应幅度'); title('频谱图'); grid; 四、带通滤波器设计中使用函数 计算幅值函数:abs; 计算相位角函数:angle; 设定图像显示窗口函数:figu
21、re, 如:figure(1),figure(2); 分割figure,创建子坐标系函数:subplot; 在图形底层显示格点,便于参照比对函数:grid; Butterworth设计带通滤波器 [B,A] = BUTTER(N,Wn),N为阶数,Wn与Fs有关; 模拟滤波器的频率响应函数 :freqs; 数字滤波器的频率响应函数 :freqz; 实现滤波函数 :Filter 对于离散序列,MATLAB用stem( )命令实现其绘制 五、结果分析 设计过程中,首先产生连续输入信号,包含中频(f=200Hz),高频(f=500Hz),低频(f=30Hz)分量,然后对其进行采样,
22、利用傅里叶变换进行频谱分析,并由带通滤波器的参数设计带通滤波器对信号进行滤波处理,对应带通滤波器的通带范围是(100,300),从运行结果图中可以看出,经过带通滤波器滤波后信号对应的频率为原信号中的中频分量(f=200Hz)。对比波形如下图8: a 滤波前信号波形图 b 滤波后波形图 图8 滤波前后信号波形对比图 由上述结果显示,在误差允许的范围内实验结果与理论结果相同。出现误差的原因:在设计滤波器的参数时并不是十分的准确,在不同计算机上运行MATLAB时会有一定的偶然误差,从而导致实验误差的存在。 六、设计心得 此次带通滤波器的课程设计,我们是用三个信号(分别为高、中、低
23、频)相结合产生一个连续的输入信号,以巴特沃斯滤波器为原型设计出带通滤波器,继而用这个带通滤波器对连续的输入信号进行滤波,产生一个带通输出。 由课本上知识已知,一个理想的滤波器是物理不可实现的,肯定会有一些误差,应该做的就是尽量减小误差,去跟理想逼近。在此次课程设计中,就是运用这个原理进行设计,希望设计出的滤波器尽量逼近理想情况。一个理想的带通滤波器应该有平稳的通带,同时限制所有通带外频率的波通过,而实际上,并不能完全实现这种理想的状态,所以我们设计时,一遍遍地改变设计参数,继而调试运行,查看调试出的图形结果,使它能尽量的逼近理想滤波器。 课程设计过程中,我最大的收获就是对MATLAB有了更
24、深刻的认识,以前对这个软件只是有一点点的理解,平时做实验时接触了一下下,但是在这一周内,通过不断地接触、应用、与同学讨论、查课外资料等等途径,现在可以说用起它来基本上是可以得心应手了。这段时间内,通过对这个软件的接触,我深感于MATLAB强大的功能,它不仅具有高效的计算能力、灵活的图形处理能力、简单易懂的编程语言,更重要的是它对图形有超强的逼近模仿能力,应用起来非常方便。 对于每次的实验,由于时间有限,我总是处在有很多疑问的状态,得不到与时的解答,而这次的课程设计,历时一周,让我有充分的时间去思考、去查阅相关资料、和同学讨论,并询问了相关的代课老师,真正的学到了好多东西,也是少有的几次真正透
25、彻地理解了其原理、不再存在未解决的疑问的设计。 设计过程中,我们也遇到了很多问题。起初用的是椭圆滤波器为原型来设计这个需要的带通滤波器,因为椭圆滤波器对带通来说有较多的优点。根据设计参数的要求,和我以前对这个滤波器的认识,我得出了初步的设计结果,所以有了设计结果之后再回顾过来,我们存在好多问题无法解决,查阅了相关书籍还是有一些疑问存在。最终,我决定放弃这个方案,改用对带通来说也能很逼近的巴特沃斯滤波器。 不过虽然是学过的东西,要真正做起来,也并没那么简单。了解了巴特沃斯滤波器所有的参数特性以后,结合题目的要求,一遍遍地修改拟定的参数,使得最后滤波的结果能尽量的最逼近理想结果。经过多次的修改之后,终于定下了它最后需要的参数,设计出了能力范围之内的最理想的滤波器,并选择了不会产生失真的符合要求的连续输入信号,经过调试运行之后,最后的设计结果都在控制范围之内。 17 / 17






