滤波器设计与信号滤波课程设计报告.docx
- 文档编号:23562714
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:20
- 大小:141.41KB
滤波器设计与信号滤波课程设计报告.docx
《滤波器设计与信号滤波课程设计报告.docx》由会员分享,可在线阅读,更多相关《滤波器设计与信号滤波课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
滤波器设计与信号滤波课程设计报告
中北大学信息与通信工程学院
课程设计报告
题目:
滤波器设计与信号滤波
专业:
电子信息科学与技术
班级:
12050142
姓 名:
周先涛
时间:
2015.06.28~2015.07.10
指导教师:
王小燕
完成日期:
2015年07月10日
课程设计任务书
1.设计目的:
通过本课程设计,主要训练和培养学生综合应用所学过的信号及信息处理等课程的相关知识,独立完成信号仿真以及信号处理的能力。
包括:
查阅资料、合理性的设计、分析和解决实际问题的能力,数学仿真软件Matlab和C语言程序设计的学习与应用,培养规范化书写说明书的能力。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
设计题目:
设有一个信号,包含两个频率的正弦分量:
F1=5Hz,F2=50Hz。
现受到一个频率为40Hz的信号干扰,设计一个数字滤波器,要求滤掉干扰噪声。
设计要求:
3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
1熟悉有关的滤波器设计理论知识,选择合适的滤波器技术指标和类型设计滤波器,得到滤波器参数。
2实现信号产生和滤波等有关Matlab函数。
3写好总结报告,写出基本原理,有关程序,得到的图表,结果分析,总结。
课程设计任务书
4.主要参考文献:
●要求按国标GB7714—87《文后参考文献著录规则》书写,例:
1傅承义,陈运泰,祁贵中.地球物理学基础.北京:
科学出版社,1985
5.设计成果形式及要求:
毕业设计说明书
仿真结果
6.工作计划及进度:
2015年7月1日~7月4日了解设计题目及熟悉资料;
7月5日~7月6日确定各题目要求计算相关参数;
7月7日~7月7日结合各题目确定具体设计方案;
7月8日~7月9日结合要求具体设计并仿真、整理报告;
7月10日答辩。
系主任审查意见:
签字:
年月日
目录
1设计背景……………………………………………………………………3
2matlab…………………………………………………3
3滤波器性能分析和比较.……………………………………………………9
4滤波器的程序及参数设定.……………………………………………………15
5滤波器处理结果及分析…………………………………………………18
6实验总结与体会………………………………………………………20
7主要参考文献………………………………………………………………….20
1.设计背景
滤波器是一种能使有用信号顺利通过而同时对无用频率信号进行抑制(或衰减)的电子装置。
随着大功率电子器件的出现,谐波干扰已经是工业生产和科研事业发展的巨大的障碍,应运而生的滤波器产品也就派上用场,滤波器的发展前景是不可小视的,可以说凡有电子产品的地方必有滤波器产品。
在近代电信设备和各类控制系统中,滤波器应用极为广泛,在所有的电子部件中,使用最多,技术最为复杂的要算滤波器了。
滤波器的优劣直接决定产品的优劣及整个系统的性能。
所以,对滤波器的研究和生产历来为各国所重视。
工程上常用滤波器来做信号处理、数据传送和抑制干扰等。
以往主要采用无源元件R、L和C组成模拟滤波器,六十年代以来,R、C组成的有源滤波器,具有不用电感、体积小、重量轻等优点,随着微电子学的发展,基于放大器和R、C构成的有源滤波器应用日益广泛。
人们已经可以把一些电阻和电容与运放集成在一块芯片上构成通用有源滤波器。
这种芯片集成度高,片内集成了设计滤波器所需的电阻和电容,在应用中只需极少数外部器件就可以很方便地构成一个有源滤波器。
到70年代后期,上述几种滤波器的单片集成已被研制出来并得到应用。
80年代,致力于各类新型滤波器的研究,努力提高性能并逐渐扩大应用范围。
90年代至现在主要致力于把各类滤波器应用于各类产品的开发和研制。
因此滤波器的发展对于一个国家的经济产业起到很重要的作用。
因此滤波器的设计显得尤为重要。
2.matlab
2.1开发算法和应用程序
MATLAB提供了一种高级语言和开发工具,使您可以迅速地开发并分析算法和应用程序。
2.1.1MATLAB语言
MATLAB语言支持向量和矩阵运算,这些运算是工程和科学问题的基础。
这样使得开发和运行的速度非常快。
使用MATLAB语言,编程和开发算法的速度较使用传统语言大大提高,这是因为无须执行诸如声明变量、指定数据类型以及分配内存等低级管理任务。
在很多情况下,MATLAB无须使用"for"循环。
因此,一行MATLAB代码经常等效于几行C或C++代码。
同时,MATLAB还提供了传统编程语言的所有功能,包括算法运算符、流控制、数据结构、数据类型、面向对象编程(OOP)以及调试功能。
利用MATLAB,无须执行编译和链接即可一次执行一个或一组命令,这样就可以迅速迭代到最佳解决方案。
为快速执行大量的矩阵和向量计算,MATLAB使用了处理器经过优化的库。
对于通用的标量计算,MATLAB使用其JIT(即时)编译技术生成机器代码指令。
这一技术可用于大多数平台,它提供了可与传统编程语言相媲美的执行速度。
2.1.2开发工具
MATLAB包含一些有助于高效实施算法的开发工具。
这些工具如下:
MATLAB编辑器-提供标准的编辑和调试功能,如设置断点及单步执行
M-Lint代码检查器-对代码进行分析并提出更改建议,以提高其性能和可维护性
MATLAB事件探查器-记录执行各行代码所花费的时间
目录报表-扫描目录中的所有文件,并报告代码效率、文件差异、文件相关性和代码覆盖
2.2分析和访问数据
2.2.1分析和访问数据
MATLAB对整个数据分析过程提供支持,该过程从外部设备和数据库获取数据,通过对其进行预处理、可视化和数值分析,最后到生成质量达到演示要求的输出。
2.2.2数据分析
MATLAB提供了一些用于数据分析运算的交互式工具和命令行函数,包括:
1.内插和抽取
2.抽取数据段、缩放和求平均值
3.阈值和平滑处理
4.相关性、傅立叶分析和筛选
5.一维峰值、谷值以及零点查找
6.基本统计数据和曲线拟合
7.矩阵分析
2.2.3数据访问
MATLAB是一个可高效地从文件、其他应用程序、数据库以及外部设备访问数据的平台。
您可以从各种常用文件格式(如MicrosoftExcel)、ASCII文本或二进制文件、图像、语音和视频文件以及诸如HDF和HDF5等科学文件中读取数据。
借助低级二进制文件I/O函数,可以处理任意格式的数据文件。
而其他函数可使您从Web页面和XML中读取数据。
2.3数据可视化
2.3.1实现数据可视化
MATLAB中提供了将工程和科学数据可视化所需的全部图形功能。
这些功能包括二维和三维绘图函数、三维卷可视化函数、用于交互式创建图形的工具以及将结果输出为各种常用图形格式的功能。
可以通过添加多个坐标轴、更改线的颜色和标记、添加批注、LATEX方程和图例以及绘制形状,对图形进行自定义。
2.3.2二维绘图
可以通过使用二维绘图函数将数据向量可视化,创建以下图形:
1.线图、区域图、条形图以及饼图
2.方向图及速率图
2.3.3三维绘图和卷可视化
MATLAB提供了一些用于将二维矩阵、三维标量和三维向量数据可视化的函数。
可以使用这些函数可视化庞大的、通常较为复杂的多维数据,以帮助理解;还可以指定图形特性,如相机取景角度、透视图、灯光效果、光源位置以及透明度等等。
三维绘图函数包括:
1.曲面图、轮廓图和网状图
2.成像图
3.锥形图、切割图、流程图以及等值面图
2.3.4交互式创建和编辑图形
MATLAB提供了一些用于设计和修改图形的交互式工具。
在MATLAB图形窗口中,可以执行以下任务:
1.将新的数据集拖放到图形上
2.更改图形上任意对象的属性
3.缩放、旋转、平移以及更改相机角度和灯光
4.添加批注和数据提示
5.绘制形状
6.生成可供各种数据重复使用的M代码函数
2.4执行数字运算
MATLAB包含了各种数学、统计及工程函数,支持所有常见的工程和科学运算。
这些由数学方面的专家开发的函数是MATLAB语言的基础。
这些核心的数学函数使用LAPACK和BLAS线性代数子例程库和FFTW离散傅立叶变换库。
由于这些与处理器相关的库已针对MATLAB支持的各种平台进行了优化,因此其执行速度比等效的C或C++代码的执行速度要快。
MATLAB提供了以下类型的函数,用于执行数学运算和数据分析:
1.矩阵操作和线性代数
2.多项式和内插
3.傅立叶分析和筛选
4.数据分析和统计
5.优化和数值积分
6.常微分方程(ODE)
7.偏微分方程(PDE)
MATLAB可对包括双精度浮点数、单精度浮点数和整型在内的多种数据类型进行运算。
附加的工具箱(单独提供)提供了专门的数学计算函数,用于包括信号处理、优化、统计、符号数学、偏微分方程求解以及曲线拟合在内的各个领域。
2.5发布结果和部署应用程序
MATLAB提供了很多用于记录和分享工作成果的功能。
可以将MATLAB代码与其他语言和应用程序集成,并将MATLAB算法和应用程序部署为独立程序或软件模块。
2.5.1发布结果
利用MATLAB,可以将结果导出为图形或完整的报表。
您可以将图形导出为各种常用的图形文件格式,然后将图形导入到诸如MicrosoftWord或MicrosoftPowerPoint等其他软件包中。
使用MATLAB编辑器,可以用HTML、Word、LATEX和其他格式发布MATLAB代码。
2.5.2部署应用程序
可以在MATLAB中创建算法并将其作为M代码分发给其他MATLAB用户。
使用MATLAB编译器(单独提供),可以将算法作为项目中的独立应用程序或软件模块部署给未使用MATLAB的用户。
借助其他产品,可以将算法转换为能从COM或MicrosoftExcel调用的软件模块。
3.滤波器性能分析和比较
3.1切比雪夫滤波器介绍
在巴特沃兹滤波器中,幅度响应在通带和阻带内都是单调的。
因此,若滤波器的技术要求是用最大通带和阻带的逼近误差来给出的话,那么,在靠近通带低频端和阻带截止频率以上的部分都会超出技术指标。
一种比较有效的途径是使逼近误差均匀地分布于通带或阻带内,或同时在通带和阻带内都均匀分布,这样往往可以降低所要求的滤波器阶次。
通过选择一种具有等波纹特性而不是单调特性的逼近方法可以实现这一点。
切比雪夫型滤波器就具有这种性质:
其频率响应的幅度既可以在通带中是等波纹的,而在阻带中是单调的(称为I型切比雪夫滤波器),也可以在通带中是单调的,而在阻带中是等波纹的(称为II型切比雪夫滤波器)。
I型切比雪夫滤波器的幅度平方函数是
=
(3.1)
式中为N阶切比雪夫多项式,定义为:
(3.2)
从切比雪夫定义式可以直接得出由
和
求
的递推公式。
将三角恒等式代入(3.2)式,得
(3.3)
切比雪夫滤波器的极点在S平面上呈椭圆分布。
他们的直径分别等于椭圆短轴和长轴。
为了求切比雪夫滤波器在椭圆上极点的位置,我们首先要这样确定,在大圆和小圆上以等角度等间隔排列的那些点:
这些点对于虚轴呈对称分布,并且没有一个点落在虚轴上;但当N为奇数时要有一个点落在实轴上,而当N为偶数时,就都不会落在实轴上。
切比雪夫滤波器的极点落在椭圆上,起纵坐标由相应的大圆上点的纵坐标来表示,起横坐标由相应的小圆上点的横坐标来表示。
3.2滤波器原理
滤波器作用是对输入信号起到滤波的作用。
对图4-1所示的LSI系统,其时域输入关系是:
y(n)=x(n)*h(n)
图3-1LSI系统
若y(n)、x(n)的傅立叶变换存在,则输入输出的频域关系是:
(3.4)
若滤波器的输入、输出都是离散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为为数字滤波器(DF,DigitalFilter)。
当用硬件实现一个DF时,所需的元件是延迟器、乘法器和加法器:
而利用MATLAB软件时,它仅需线性卷积程序便可以实现。
众所周知,模拟滤波器(AF,AnalogFiler)只能用硬件来实现,其元件是电阻R,电感L,电容C及运算放大器等。
因此DF的实现要比AF容易得多,且更容易获得较理想的滤波性能。
3.3滤波器的种类
滤波器的种类很多,分类方法也不同,可以从功能上分,也可以从实现方法上分,或从设计方法上分等。
但总的来说,滤波器可分为两大类,即经典滤波器和现代滤波器。
经典滤波器是假定输入信号x(n)中的有用成分和无用成分(如噪声)各自占有不同的频带,当x(n)通过滤波器后可将无用成分有效滤去。
如果信号中的有用成分和无用成分的频带相互重叠,那么经典滤波器将无法滤除信号中的无用成分。
现代滤波器理论研究的主要内容是从含有噪声的数据记录(又称为时间时间系列)中估计出信号的某些特性或信号本身。
一旦信号被估计出,那么估计出的信号与原信号相比较高的信噪比。
现代滤波器把信号和噪声都视为随机信号,利用它们的统计特征(如自相关函数、功率谱等)推导出一套最佳的估值算法,然后用硬件或软件予以实现。
现在滤波器理论源于维纳在20世纪40年代及其以后的工作,因此维纳滤波器便是这一类滤波器的典型代表。
此外,还有卡尔曼滤波器、线性预测滤波器、自适应滤波器等。
经典滤波器从功能上可分为四种,即低通(LP,LowPass)、高通(HP,HighPass)、带通(BP,BandPass)和带阻(BS,BandStop)滤波器,每一种又有模拟滤波器(AF)和数字滤波器(DF)两种形式。
图1-2和图1-3分别给出了AF及DF的四种滤波器的理想幅频响应。
图中所给的滤波器的幅频特性都是理想情况,在实际应用中,这是难以实现的。
例如对于低通滤波器,其抽样响应h(n)(或冲击响应h(t))是sinc函数,在-
~+
有值,因此该滤波器是非因果的。
在实际工程中,所设计的滤波器都是在某些准则下对理想滤波器的近似,但这保证了滤波器的物理可实现性和稳定性。
图3-2模拟滤波器四种类型的理想幅频响应
图3-3数字滤波器四种类型的理想幅频响应
数字滤波器按照单位取样响应h(n)的时域特性可分为无限脉冲响应(IIR,InfiniteImpulseResponse)系统和有限脉冲响应(FIR,FiniteImpulseResponse)系统。
数字滤波器按照实现的方法和结构形式分为递归型或非递归型两类。
递归型数字滤波器的当前输出y(n)是x(n)的当前和以前各输入值x(n-1),x(n-2),…,及以前各输出值y(n-1),y(n-2),…的函数。
一个N阶递归数字滤波器(IIR滤波器)的差分方程为:
(3.5)
由递归术语的含义,式(4-2)中的系数
至少有一项不为零。
0说明必须将延时的输出系列y(n-i)反馈回来。
因此,从结构上看递归系统必须有反馈环路。
递归系统的传递函数定义为:
(3.6)
递归系统的传递函数H(z)在z平面上不仅有零点,而且有极点。
非递归型数字滤波器当前的输出值y(n)仅为当前的和以前的输入序列的函数,而与以前的各个输出值无关,因此从结构上看非递归系统没有反馈环路。
一个N阶非递归型数字滤波器(FIR滤波器)的差分方程为:
(3.7)
系数
等于单位取样响应序列值h(n)。
其系统函数H(Z)可以表示为以下形式:
(3.8)
H(Z)是
的多项式,因此它的极点只能在z平面的原点上。
3.4采样频率
由于在数字滤波器设计中w是用弧度表示的,而实际上给出的频率要求往往是实际频率f,单位为HZ,因此在数字滤波器的设计中还应给出采样频率
。
3.5滤波器设计的步骤
不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:
按照实际任务的要求,确定滤波器的性能指标。
用一个因果、稳定的离散线性是不变系统的系统函数去逼近这一性能指标。
根据不同的要求可以用IIR系统函数,也可以用FIR系统函数去逼近。
利用有限精度算法实现系统函数。
这里包括结构的选择、字长选择等。
IIR数字滤波器设计的最通用的方法是借助于模拟滤波器的设计方法。
模拟滤波器设计已经有了一套相当成熟的方法,它不但有完整的公式,而且有较为完整的图标供查询,因此充分利用这些已有的资源将会给数字滤波器的设计带来很大的方便。
IIR数字滤波器的设计步骤是:
按一定规则将给出的数字滤波器的设计指标转换为模拟低通滤波器的技术指标。
根据转换后的技术指标设计模拟低通滤波器G(s)。
再按一定规则将G(s)转换成H(z)。
若所设计的数字滤波器是低通的,那么上述设计工作可以结束,若所设计的是高通、带通或带阻滤波器,那么还需进行步骤4),
将高通、带通或带阻数字滤波器的设计指标先转换为低通模拟滤波器的技术指标,然后按上述步骤2)设计出低通G(s),再将G(s)转换为所需的H(z)。
设计高通、带通、带阻等数字滤波器时,有两种方法:
先设计一个相应的高通、带通或带阻模拟滤波器,然后通过脉冲响应不变法或双线性变换法转换为数字滤波器。
变换方法的选用:
(1)脉冲响应不变法:
对于高通、带阻等都不能直接采用,或只能在加了保护滤波器后才可用。
因此,使用直接频率变换,对脉冲响应不变要许多特殊考虑,它一般应用于第一种方法中。
(2)双线性变换法:
基于双线性变换法的高通滤波器的设计:
在模拟滤波器的高通设计中,低通到高通的变换就是S变量的倒置,这一关系同样可应用于双线性变换,只要将变换式中的S代之以1/S,就可以得到数字高通滤波器。
由于倒数关系不改变模拟滤波器的稳定性,因此,也不会影响双线性变换后的稳定条件,而且jΩ轴仍映射在单位圆上,只是方向颠倒了。
所谓高通DF,并不是ω高到∞,由于数字频域存在折叠ω=
对于实数响应的数字滤波器,ω由
部分只是ω由
的镜像部分,因此有效的数字域是
高通也仅指这一段的高端,即到
为止的部分。
高通变换的计算步骤和低通变换一样。
4.滤波器的程序及参数设定
脚本文件1:
functionhua_fft(y,fs,style,varargin)
nfft=2^nextpow2(length(y));
y=y-mean(y);
y_ft=fft(y,nfft);
y_p=y_ft.*conj(y_ft)/nfft;
y_f=fs*(0:
nfft/2-1)/nfft;
ifstyle==2
plot(y_f,y_p(1:
nfft/2));
else
subplot(211);plot(y_f,2*abs(y_ft(1:
nfft/2))/length(y));
ylabel('幅值');xlabel('频率');title('信号幅值谱');
subplot(212);plot(y_f,y_p(1:
nfft/2));
ylabel('功率谱密度');xlabel('频率');title('信号功率谱');
end
end
脚本文件2:
functiony=bands(x,f1,f2,f3,f4,rp,rs,Fs)
wp1=2*pi*f1/Fs;
wp3=2*pi*f2/Fs;
wsl=2*pi*f3/Fs;
wsh=2*pi*f4/Fs;
wp=[wp1wp3];
ws=[wslwsh];
[n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs);
[bz1,az1]=cheby1(n,rp,wp/pi,'stop');
[h,w]=freqz(bz1,az1,256,Fs);
h=20*log10(abs(h));
figure;plot(w,h);title('所设计滤波器的通带曲线');gridon;
y=filter(bz1,az1,x);
End
主要参数及计算:
通带左边界fl=38hz
通带右边界f2=42hz
衰减截止左边界f3=35hz
衰减截止右边界f4=45hz
边带区衰减DB数rp=0.1db
截止区衰减DB数rs=30db
序列y的采样频率fs=200hz
主程序:
fs=200;
t=(1;fs)/fs;
y=sin(2*pi*5)+sin(2*pi*40)+sin(2*pi*50);
figure;hua_fft(y,fs,1);
z=bands(y,38,42,35,45,0.1,30,fs);
figure;hua_fft(z,fs,1);
z=bands(y,38,42,35,45,0.1,30,fs);
Figure;hua_fft(z,fs,1);
5.滤波处理结果及分析
图5.1波前信号频谱图
图5.2滤波器的滤波曲线图
图5.3经滤波后的信号频谱图
6.总结和体会
本滤波器是通过一个40Hz的带阻滤波与两个频率的正弦分量5Hz,50Hz进行卷积实现对40Hz信号干扰的除去。
首先我们从网上找到信号源的代码和带阻滤波器的代码,然后进行该编使形成滤波源和一个40Hz的带阻滤波器,然后通过MATLAB形成两个M文件,然后输入一个5Hz,40Hz,50Hz的信号进行滤波得出结果。
开始我们对MATLAB软件并不是很熟悉,遇到了很多问题,比如编码中有很多不认识的函数,怎样让输入信号与带阻相结合等等,我们通过在网上查资料和参考数字信号处理书,一步一步的进行设计,中间也遇到很多问题比如带阻设计的参数等,不过最后经过努力吧问题都解决了。
陈家海30%,周先涛30%,杨帅30%,董思敏10%。
7.主要参考文献:
1桂志国.杨民.数字信号处理.第三版.国防工业出版社出版社,2012
2闫胜利.FIR滤波器设计原理[J].长春工程学院(自然科学版),2003
3姚齐国.基于MATLAB的数字滤波器的设计[J].江西理工大学学报,2006
4杨守卫.FIR数字滤波器应用分析探讨[J].河北省工程咨询院学报,2006
5朱敏.MATLAB数字信号处理工具箱的开发和应用[J].信息电脑,2010
6陈桂明,张明照,戚红雨.应用MATLAB语言处理信号与数字像图[M].北京:
科学出版社,2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 滤波器 设计 信号 滤波 课程设计 报告