
学 院: 信息与通信工程学院
专 业: 电子信息科学与技术
学 生 姓 名: 学 号:
课程设计题目: 低通滤波器设计
起 迄 日 期: 6 月 13 日~6月 24日
课程设计地点:
指 导 教 师:
系 主 任:
下达任务书日期: 2011 年 6 月12 日
课 程 设 计 任 务 书
| 1.设计目的: |
| 设计一种低通滤波器并对信号进行滤波。低通滤波器的作用是滤去信号中的中频和高频成分,增强低频成分。要求做到:1).了解MATLAB的信号处理技术;2).了解低通滤波器的主要优点和缺点;3).掌握低通滤波器的设计和滤波处理技术。 |
| 2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等): |
| 产生一个连续信号,包含低频、中频、高频分量,对其进行采样,进行频谱分析,并设计低通滤波器对信号进行滤波处理,观察滤波后信号的频谱。 |
| 3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕: |
| 1).熟悉有关采样,频谱分析的理论知识,对信号作频谱分析; 2).熟悉有关滤波器设计理论知识,选择合适的滤波器技术指标,设计低通滤波器对信号进行滤波,对比分析滤波前后信号的频谱; 3).实现信号频谱分析和滤波等有关MATLAB函数; 4).写出基本原理,有关程序,得到的图表,结果分析,总结; 5).递交课程设计说明书。 |
| 4.主要参考文献: |
| 1、桂志国,楼国红,陈友兴.数字信号处理.北京:科学出版社,2009 2、许开宇.数字信号处理.北京:电子工业出版社,2005 3、董长虹.MATLAB信号处理与应用.北京:国防工业出版社,2005 |
| 5.设计成果形式及要求: |
| 1).课程设计说明书; 2).仿真结果。 |
| 6.工作计划及进度: |
| 2011年6月13日~6月17日 查阅相关资料,提出初步方案; 6月18日~6月21日 开始动手制作,并进行调试改进,提出最终具体方案; 6月22日~6月23日 书写说明书,准备答辩; 6月24日 答辩或成绩考核。 |
| 系主任审查意见: 签字: 年 月 日 |
1.1设计目的········································5
1.2设计内容和要求 ·······························5
2 设计原理·······························5
2.1 FIR滤波器····································5
2.2窗函数·····································6
2.3矩形窗·····································7
3 设计过程·································8
3.1 设计流程图·································8
3.2 产生原始信号并分析频谱·································8
3.3 使用矩形窗设计不同特性的数字滤波器··················10
3.4 信号滤波处理·································11
4 实验结果及分析·································12
5 课程设计心得体会·································12
6 参考文献·································13
附录:·································14
低通滤波器的设计
1 设计目的及要求
1.1设计目的
设计一种低通滤波器并对信号进行滤波。低通滤波器的作用是滤去信号中的中频和高频成分,增强低频成分。要求做到:
1.了解MATLAB的信号处理技术;
2.使用MATLAB设计低通滤波器,掌握其滤波处理技术;
3.对滤波前和滤波后的波形进行时域和频域比较。
1.2设计内容和要求
1.熟悉有关采样,频谱分析的理论知识,对信号作频谱分析;
2.熟悉有关滤波器设计理论知识,选择合适的滤波器技术指标,设计低通滤波器对信号进行滤波,对比分析滤波前后信号的频谱;
3.实现信号频谱分析和滤波等有关MATLAB函数;
2 设计原理
本次课程设计,我们主要是基于矩形窗的FIR滤波器来设计一个低通滤波器。
2.1 FIR滤波器
FIR滤波器即有限抽样响应因果系统,其单位抽样响应h(n)是有限长的;极点皆位于z=0处;结构上不存在输出到输入的反馈,是非递归型的。其系统函数表示为:
普通的FIR滤波器系统的差分方程为:
式中:N为FIR滤波器的抽头数;x(n)为第n时刻的输入样本;h(i)为FIR滤波器第 i级抽头系数。
其直接型如图2-1所示。
图2-1 FIR直接型的一般形式
在自适应处理、数据通信等领域中往往要求信号在传输过程中不能有明显的相位失真,FIR滤波器可以做到线性相位满足此要求。FIR滤波器实质上是一个分节的延迟线,把每一节的输出加权累加,得到滤波器的输出。对于FIR滤波器的单位脉冲响应h(i)只要满足以下2个条件之一,则为线性相位滤波器。
线性相位的FIR滤波器具有中心对称的特性,其对称中心在N/2处。FIR滤波器的结构主要是非递归结构,没有输出到输入的反馈。并且FIR滤波器很容易获得严格的线性相位特性,避免被处理信号产生相位失真。而线性相位体现在时域中仅仅是h( n)在时间上的延迟,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的。此外,他不会发生阻塞现象,能避免强信号淹没弱信号,因此特别适合信号强弱相差悬殊的情况。其主要的不足之处是,其较好的性能是以较高的阶数为代价换来的。因此,在保证相同性能的前提下,努力降低其阶数是FIR数字滤波器设计的重要因素之一。
2.2窗函数
FIR滤波器的设计方法有窗函数法、频率取样法和最优化设计法。其中窗函数法是设计FIR滤波器最简单有效的方法,也是最常用的方法。在本次设计中,低通滤波器的系数是借助于窗函数法完成的。窗函数设计的思想是采用不同有限时宽的窗函数去乘以无限长序列,从而得到有限长序列h(n)。利用加窗函数进行截断和平滑,实现一个物理可实现且具有线性相位的FIR滤波器的设计目的。
FIR滤波器的窗函数法设计过程为:
式中:为逼近的理想滤波器频率响应;为理想滤波器的单位脉冲响应,是无限长序列。
为获取实际应用的FIR滤波,需将截断,用有限长的h(n)近似表示,用窗函数可以得到h(n)= *,最后得到实际FIR滤波的频率响应H(ejΩ)。
设计常用的窗函数有矩形窗、汉宁窗、海明窗、凯撒窗等。矩形窗是一种比较容易实现的窗,本设计选择矩形窗实现。
2.3矩形窗
这是一种最简单的窗函数,其窗函数为
它的频率响应函数是
将这个值与主瓣幅度(等于M)比较,这个峰值旁瓣幅度是主瓣幅度的13dB。累加振幅响应由第一个旁瓣幅度在21dB,这就形成了21dB的最小阻带衰减而与窗的宽度M无关。利用最小阻带衰减,可将过渡带宽准确计算处,这个计算出的真正过渡带宽是
= ,这大约是近似带宽的一半。
3 设计过程
3.1 设计流程图
图3-1 设计流程图
3.2 产生原始信号并分析频谱
要产生一个连续信号,包含低频,中频,高频分量,并对其进行采样。这里信号取的是s=sin(2**t*5)+sin(2**t*15)+sin(2**t*30),信号中包含了5Hz、15Hz、30Hz频率分量,对其采样的频率取100Hz。用plot函数画出其时域波形如图3-2所示:
图3-2 原始信号时域波形图
用fft函数对其进行快速傅里叶变换,画出其频谱图,即幅度谱和相位谱,如图3-3所示:
图3-3 幅度谱和相位谱
从频谱图中可以清楚看出其包含有低频、中频和高频分量。
3.3 使用矩形窗设计不同特性的数字滤波器
首先设计低通滤波器,针对信号含有的三个频率分量,低通滤波器要把中频和高频分量滤掉,因此取通带截止频率为=10Hz,阻带截止频率为=13Hz。取样频率为=100Hz,由=2** ,=2*、过渡带宽:=,得出M。取一理想低通脉冲响应=ideal_lp(,M),其中=0.5*();矩形窗用窗函数w_box=(boxcar(M))',对加矩形窗w_box,得到一长度为M的因果且线性相位FIR滤波器h=.*w_box,用函数[db,mag,pha,grd,w]=freqz_m(h,[1])得出其频谱特性。画出理想脉冲响应、矩形窗w_boxcar、实际脉冲响应h和滤波器的幅度响应(dB),如图3-4所示。
图3-4 低通滤波器的相关图
3.4 信号滤波处理
用函数sf=filter(h,[1],s)分别得出滤波后的信号,其中h对应不同滤波器而不同。画出滤波后信号的时域波形和频谱图。
通过低通滤波器后的的信号时域波形和频谱图如图3-5、3-6所示。
图3-5 低通滤波后的时域波形
图3-6 低通滤波后的频域波形
4 实验结果及分析
把原有的信号通过所设计的低通滤波器后,得到了其时域和频域波形。通过和原有信号分析比较,可以发现滤波后信号的时域波形中高频及中频分量被滤除,只剩下了s=sin(2**t*5)的低频信号。对滤波前后的频域谱中幅度谱的对比,可以发现滤波后的幅度谱中在低频分量中的幅度和原有的信号几乎一样,而中频和高频中的幅度则可以忽略不计。经过对比,可以发现我们通过窗函数设计的低通滤波器基本符合设计要求。
5 课程设计心得体会
低通滤波器用于过滤掉信号中的高频与中频分量,以提取低频分量。我们这次设计是通过矩形窗函数来设计FIR低通滤波器,窗函数设计的思想是采用不同有限时宽的窗函数去乘以无限长序列,从而得到有限长序列h(n)。利用加窗函数进行截断和平滑,实现一个物理可实现且具有线性相位的FIR滤波器的设计目的。
通过这次课设设计,让我对以学的知识有所回忆,加深了MATLAB的应用,并且学到了许多新的知识。我们组只有三个人,虽然人比较少,但是我们对这次的课程设计都非常积极。我们根据在网上和参考书上找到有关低通滤波器的知识,在一起研究和设计程序;在MTALAB程序出不来结果时,我们认真检查核对程序,对程序加以改正,最终出来低通滤波的结果,并对滤波前后的时域频域进行分析。
这次课程设计提高了我们的动手能力和自己主动分析解决问题的能力,也让我意识到团队合作的重要性,只有让每个人发挥自己的长处,才会发挥团队的力量。
6 参考文献
1、桂志国,楼国红,陈友兴.数字信号处理.北京:科学出版社,2009
2、许开宇.数字信号处理.北京:电子工业出版社,2005
3、董长虹.MATLAB信号处理与应用.北京:国防工业出版社,2005.
附录:
程序功能:产生一个包含低频、中频、高频的连续信号进行取样并画出其时域图
Fs=100;
t=(1:100)/Fs;
s1=sin(2*pi*t*5);
s2=sin(2*pi*t*15);
s3=sin(2*pi*t*30);
s=s1+s2+s3;
plot(t,s); % 画出信号的时域波形
xlabel('Time(seconds)');
ylabel('Time waveform');
title('原始信号的时域波形');
程序功能:画出信号的频谱图
S=fft(s,512); % 对s进行快速傅立叶变换
w=(0:255)/256*(Fs/2);
plot(w,abs(S(1:256))); % 画出信号的幅度图
xlabel('Frequency (Hz)');
ylabel('幅度');
title('幅度谱');
axis([0 35 0 60]);grid;
plot(w,angle(S(1:256))); % 画出信号的相位图 xlabel('Frequency (Hz)');
ylabel('相位');
title('相位谱');
程序功能:设计低通滤波器并画出其频谱图:
fb=10; fc=13; % 设置滤波器截止频率
fs=100; wb=2*pi*fb/fs;
ws=2*pi*fc/fs; wc=0.5*(wb+ws);
tr_width=ws-wb; % 过渡带宽M=ceil(1.8*pi/tr_width);
hd=ideal_lp(wc,M); % 产生一理想低通滤波器
w_box=(boxcar(M))'; % 矩形窗窗函数
h=hd.*w_box;h=hd.*w_box;h=hd.*w_box;
[db,mag,pha,grd,w]=freqz_m(h,[1]);
n=[0:1:M-1];
subplot(2,2,1);stem(n,hd); % 理想脉冲响应
xlabel('n');ylabel('hd(n)'); title('Ideal Impulse Response');
subplot(2,2,2);stem(n,w_box); % 矩形窗
xlabel('n');ylabel('w(n)'); title('Boxcar Window');
subplot(2,2,3);stem(n,h); % 实际脉冲响应
xlabel('n');ylabel('h(n)'); title('Actual Impulse Response');
subplot(2,2,4);plot(w*fs/(2*pi),db); % 幅度响应(dB)
axis([0 40 -50 0]);
xlabel('Frequency (Hz)');ylabel('Decibels');title('Magnitude Response in dB');
grid
产生理想状态低通滤波器
function hd=ideal_lp(wc,M);
alpha=(M-1)/2;
n=[0:1:(M-1)];
m=n-alpha+eps;
hd=sin(wc*m)./(pi*m);
对频谱图分析
function [db,mag,pha,grd,w] = freqz_m(b,a);
[H,w] = freqz(b,a,1000, 'whole' );
H = (H(1:1:501))'; w = (w(1:1:501))';
mag = abs(H);
db = 20*log10((mag+eps)/max(mag));
pha = angle(H);
grd = grpdelay(b,a,w);
程序功能:画出滤波后信号的时域波形和频谱
sf=filter(h,[1],s); % sf为滤波后的信号
plot(t,sf); % 画出滤波后信号的时域波形
xlabel('时间 (s)');
ylabel('时域波形');
axis([0 1 -1 1]);
title('滤波后信号的时域波形');
SF=fft(sf,512); % 对sf进行快速傅里叶变换
w=(0:255)/256*(Fs/2);
subplot(1,2,1);
plot(w,abs(SF(1:256))); % 画出滤波后信号的幅度图
xlabel('频率 (Hz)');
ylabel('幅度谱');
title('滤波后信号的幅度谱'); grid;
subplot(1,2,2);
plot(w,angle(SF(1:256))); % 画出滤波后信号的相位图
xlabel('频率 (Hz)');
ylabel('相位谱');
title('滤波后信号的相位谱');
