数字滤波器地设计.docx
- 文档编号:7736767
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:14
- 大小:91.03KB
数字滤波器地设计.docx
《数字滤波器地设计.docx》由会员分享,可在线阅读,更多相关《数字滤波器地设计.docx(14页珍藏版)》请在冰豆网上搜索。
数字滤波器地设计
课程设计任务书
学生姓名:
xxx专业班级:
自动化xxxx班
指导教师:
xxx工作单位:
自动化学院
题目:
数字滤波器的设计
初始条件:
1.计算机对含有干扰的正弦信号R(频率100Hz)进行数字滤波处理,保留正弦信号,去除干扰。
2.用计算机模拟带有干扰的正弦信号。
首先计算机产生一个随机信号,再与正弦信号叠加。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.分析数字滤波的常用方法,以及各自的优缺点;
2.采用一阶惯性滤波器算法,设计算法程序;
3.在显示器上显示滤波前与滤波后的信号曲线;
4.通过数据分析采样周期T对滤波效果的影响;
5.撰写设计说明书。
课程设计说明书应包括:
设计任务及要求;方案比较及论证;数字滤波原理,硬件原理,电路图,采用器件的功能说明;软件思想,流程,源程序;调试记录及结果分析;参考资料;附录:
芯片资料,程序清单;总结。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
本次设计是对带有干扰的正弦信号进行数字滤波处理保留正弦信号去除干扰信号。
数字滤波是一种用软件程序实现的滤波方式,不需要硬件,适当改变滤波器程序或运算参数,就能十分方便的改变滤波特性。
我的设计是采用数字滤波中的一阶惯性滤波的方法进行滤波,一阶惯性滤波对高频及低频的干扰信号有较好的滤波效果。
将一阶惯性滤波的算法编写成MATLAB的程序,再在MATLAB上进行仿真,可清楚地看到滤波前后信号的对比。
滤波后的信号去除了干扰信号,保留了正弦信号。
关键词:
数字滤波滤波参数一阶惯性滤波MATLAB
数字滤波器的设计
1设计要求
计算机对含有干扰的正弦信号R(频率100Hz)进行数字滤波处理,保留正弦信号,去除干扰。
用计算机模拟带有干扰的正弦信号。
首先计算机产生一个随机信号,再与正弦信号叠加。
1)分析数字滤波的常用方法,以及各自的优缺点;
2)采用一阶惯性滤波器算法,设计算法程序;
3)在显示器上显示滤波前与滤波后的信号曲线;
4)通过数据分析采样周期T对滤波效果的影响;
5)撰写设计说明书。
2数字滤波方法及简介
2.1数字滤波简介
数字滤波,就是通过一定的计算程序或者判断程序,对采集的数据进行某种处理,从而消除或削弱干扰和噪声的影响,提高测量的可靠性和精度。
数字滤波的优点:
是一个计算过程,无需硬件,因此可靠性高,并且不存在阻抗匹配、特性波动、非一致性等问题。
模拟滤波器在频率很低时较难实现的问题,不会出现在数字滤波器的实现过程中。
数字滤波的缺点:
需要占用单片机资源。
由于单片机速度和存储容量都很有限,实际应用中由于实时性和存储量的限制,在普通单片机上要实现复杂的数字滤波是不太可能和实际的。
2.2数字滤波的常用方法及优缺点
数字滤波方法有很多种,每种方法有其不同的特点和使用范围,常用方法如下:
1)限幅滤波法(又称程序判断滤波法)
系统的输入端如果窜入尖脉冲干扰,会造成信号的严重失真。
对于这种随机干扰,我们就要用到限幅滤波的方法。
①方法:
比较相邻的两个采样值Yn和Yn-1,根据经验判断,确定两次采样允许的最大偏差值(设为A)。
如果两次采样值Yn和Yn-1的差值超过了允许的最大偏差范围,则认为是发生了随机干扰,并且认为最后一次采样值Yn为非法值,予以剔除。
剔除Yn后,可用Yn-1代替Yn。
若未超过允许的最大偏差范围,则认为本次采样值有效。
②优点:
能有效克服因偶然因素引起的脉冲干扰。
③缺点:
无法抑制那种周期性的干扰,平滑度差。
2)中位值滤波法
中位值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术。
中位值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,消除孤立的噪声点。
①方法:
对被测参数连续采样N次(N取奇数),再把N次采样值按大小顺序排列,取中间值作为本次采样的有效值。
②优点:
能有效克服因偶然因素引起的波动干扰。
对温度、液位的变化缓慢的被测参数有良好的滤
波效果。
③缺点:
对流量、速度等快速变化的参数不宜。
3)算术平均滤波法
所谓算术平均滤波就是把n个采样值相加,然后取其算术平均值作为本次有效的采样信号。
①方法:
连续取N个采样值进行算术平均运算;
N值较大时,信号平滑度较高,但灵敏度较低;
N值较小时,信号平滑度较低,但灵敏度较高;
N值的选取:
一般流量,N=12;压力,N=4;
②优点:
适用于对一般具有随机干扰的信号进行滤波,特别适用于信号本身在某一数值范围附近
上下波动的情况。
这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动。
③缺点:
对于测量速度较慢或要求数据计算速度较快的实时控制不适用,比较浪费RAM。
4)递推平均滤波法(又称滑动平均滤波法)
所谓递推平均滤波法是指把连续取N个采样值看成一个队列,队列的长度固定为N,每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据,并且把队列中的N个数据进行算术平均运算,就可获得新的滤波结果。
①方法:
把连续取N个采样值看成一个队列,队列的长度固定为N;
每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则);
把队列中的N个数据进行算术平均运算,就可获得新的滤波结果;
N值的选取:
流量,N=12;压力,N=4;液面,N=4~12;温度,N=1~4;
②优点:
对周期性干扰有良好的抑制作用,平滑度高,适用于高频振荡的系统。
③缺点:
灵敏度低,对偶然出现的脉冲性干扰的抑制作用较差,不易消除由于脉冲干扰所引起的采
样值偏差,不适用于脉冲干扰比较严重的场合,比较浪费RAM。
5)一阶滞后滤波法
一阶滞后滤波法又称为低通滤波法,是在硬件电路RC低通滤波器的基础上改写为一阶滞后滤波的算法,并通过程序实现。
①方法:
取a=0~1;
本次滤波结果=(1-a)*本次采样值+a*上次滤波结果;
②优点:
对周期性干扰具有良好的抑制作用,适用于高频及低频的干扰信号。
③缺点:
相位滞后,灵敏度低,滞后程度取决于a值大小,不能消除滤波频率高于采样频率的1/2
的干扰信号。
3一阶惯性滤波器设计
3.1一阶惯性滤波算法
一阶滤波,又叫一阶惯性滤波,或一阶低通滤波,是使用软件编程实现普通硬件RC低通滤波器的功能。
低通滤波器就是允许低频信号通过,而将高频信号衰减的电路,一般的一阶RC低通滤波器电路图如图3-1所示。
图3-1一阶RC低通滤波器电路
将电路输出电压与输入电压的比称为传递函数,RC滤波器的传递函数为:
=
令Tf=RC,称之为滤波时间常数。
假设一阶RC低通滤波器的输入电压为X(t),输出为
Y(t),它们之间的关系如下:
RC+Y(t)=X(t)
分别对其采样,即Yn=Y(n△t),Xn=X(n△t)。
如果采样间隔△t足够小,则可得离散值约为:
RC{Y(n△t)-Y[(n-1)△t]}/△t+Y(n△t)=X(n△t)
即写成差分方程为:
Tf
+Y(n)=X(n)
整理后为:
Y(n)=
X(n)+
Y(n-1)=(1-r)X(n)+rY(n-1)
其中Ts是采样周期,r=是滤波系数,满足r∈(0,1)。
X(n)为未经滤波的第n次采样值,Y(n)为第n次采样值经滤波后输出值。
一阶惯性滤波算法对周期性干扰具有良好的抑制作用,适用于波动频繁的参数滤波,不足之处是使相位滞后,灵敏度低,滞后的程度取决于滤波系数r的大小。
同时,它不能滤除频率高于采样频率二分之一的干扰信号。
3.2一阶惯性滤波器参数选取
滤波系数r由实验确定,只要使被测的信号不产生明显的纹波即可。
一般情况下,滤波系数r越大,则带宽越窄,滤波频率越低。
滤波器的截止频率为fc=1/2лRC,当Tf=RC的值越大,滤波系数r越大,滤波器截止频率越低。
在程序设计时,选取r=0.8,计算得到Tf=4Ts,,取采样周期为Ts=0.2*10
s,则采样频率为50KHZ,Tf=0.8*10
s,又fc=1/2лRC,代入数据得fc=12.5KHZ。
3.3一阶惯性滤波流程图
本次设计是对带有随机信号干扰的正弦信号进行滤波,采用MATLAB进行软件编程。
首先应对正弦信号和随机信号进行采样,离散化,再将信号叠加,输出滤波前的叠加信号波形图。
再编写一阶惯性滤波的算法程序,赋初值,用差分方程求出滤波后电压值,再通过MATLAB输出波形图。
流程图如下图2-2所示:
图3-2一阶惯性滤波算法流程图
3.4方案比较论证及程序设计
3.4.1方案比较论证
数字滤波是一种程序滤波,它克服了模拟滤波器的不足,不需要增加硬件设备,稳定性好,可靠性高,还可对低频信号和高频信号进行滤波,滤波方法灵活多样,只需针对不同的信号及滤波要求,选取滤波方法及参数,就可得到较好的滤波结果。
这是数字滤波器优于模拟滤波器之处。
在硬件电路中,常用一阶惯性RC网络的模拟滤波器来抑制干扰,当滤波时间常数Tf越大时,R值越大,设备体积增大,误差增大,降低了滤波效果。
而一阶惯性滤波算法是以数字形式通过算法来实现的动态RC滤波,能很好的克服模拟滤波器的缺点,更适合于滤波常数大的场合。
3.4.2运行环境简介
此次设计用到了一个编程软件MATLAB。
MATLAB由一系列工具组成。
这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。
包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。
简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
MATLAB有以下优点:
可用于技术计算,开发环境可对代码、文件和数据进行管理,交互式工具可以按迭代的方式探查、设计及求解问题,数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等,二维和三维图形函数可用于可视化数据,各种工具可用于构建自定义的图形用户界面,各种函数可将基于MATLAB的算法与外部应用程序和语言集成。
3.4.3程序设计
本次设计中,正弦信号为s=A*sin(w*t+Φ),A为正弦波幅值,取A=6,w=2лf,
由于要求为100HZ的正弦波,所以f=100HZ,取Φ=л/6,得正弦波方程式为s=6sin(200лt+л/6)。
随机信号选取MATLAB的rand函数,rand函数是一种均匀分布的随机数,其元素分布在(0,1)上。
进行滤波前编写采样子程序为:
fort=1:
3000
i=t/50000;
s=6*sin(200*pi*i+pi/6);
v=1*rand
(1);
x(t)=s+v;
end
用MATLAB的plot函数输出滤波前的信号波形图。
figure
(1);
plot(x);
title('一阶惯性滤波前信号');
xlabel('时间t');
ylabel('电压值');
MATLAB绘出的滤波前信号图如图3-3所示:
图3-3滤波前信号图
一阶惯性滤波的子程序编写如下:
fori=2:
n%注意i从2开始取
y(i)=r*y(i-1)+(1-r)*x(i);%一阶惯性滤波算法公式
end
由于滤波前t=1:
3000,为保持一致,程序赋初值时n=3000,选取的滤波系数r=0.8,
MATLAB编写的总程序如下:
fort=1:
3000
i=t/50000;
s=6*sin(200*pi*i+pi/6);
v=1*rand
(1);
x(t)=s+v;
end
figure
(1);
plot(x);
title('一阶惯性滤波前信号');
xlabel('时间t');
ylabel('电压值');
x
(1)=3;%赋初值
y
(1)=3;%赋初值
r=0.8;%赋初值
n=3000;%赋初值
fori=2:
n%注意i从2开始取
y(i)=r*y(i-1)+(1-r)*x(i);%一阶惯性滤波算法公式
end
figure
(2);
plot(y);
title('一阶惯性滤波后信号');
xlabel('时间t');
ylabel('电压值');
MATLAB绘出的滤波后信号图如下图3-4所示:
图3-4滤波后信号图
滤波前和滤波后输出信号的对比图如图3-5所示,程序如下,运用MATLAB的subplot函数。
subplot(2,1,1);
plot(x);
title('一阶惯性滤波前信号');
xlabel('时间t');
ylabel('电压值');
subplot(2,1,2);
plot(y);
title('一阶惯性滤波后信号');
xlabel('时间t');
ylabel('电压值');
图3-5一阶惯性滤波前后信号对比图
3.4.4分析采样周期对滤波效果的影响
随着采样周期Ts增大,根据公式r=中可知Tf=RC一定时,Ts与r成反比,Ts越大,r越小;Ts越小,r越大。
取r=0.8的滤波前后对比图效果如图3-5所示。
当Ts增大时,取r=0.4时得到的滤波前后信号对比图如图3-6所示。
图3-6将Ts增大后的滤波前后信号对比图
由图3-6可知,当Ts增大时,带有干扰的正弦信号经过一阶惯性滤波后的滤波效果没有Ts值较小时的滤波效果好。
分析知,采样周期Ts值能够影响一阶惯性滤波的滤波效果,RC选定时,当Ts越大,滤波的结果是正弦信号所带的纹波越明显。
因为此时滤波器的带宽较大,滤波频率较高,使能够通过的干扰信号增加,滤出来的正弦信号所带纹波较多。
4心得体会
为期一周多的课程设计结束了。
回想起来,还是有许多滋味从心头涌起。
这次课程设计,我所做的是有关数字滤波器的设计的问题。
从本次课程设计的目的来看,收获是不少的,它使我们对课本以及以前学过的知识有了一个更好的总结与理解,也让我知道了,学和做分开是不行的。
通过这次微型计算机控制技术的课程设计,我更清楚实践的重要性。
经过这次课程设计后,觉得自己有一个不小的进步。
虽然有些方面有些不足,但通过阅读相关书籍,学到了更好更多的东西。
他们从另一个方面透析了自己的不足,这是很重要的,它让我学会了怎样学习别人的长处并把它变成自己的长处。
有这样的机会和收获,要感谢老师的教导,是他们让自己有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路,虽然自己走出来的路要崎岖的多,但觉得踏实、放心。
以前对于编程工具的使用还处于一知半解的状态上,但是这次设计我通过一段时间的上机实践,对于怎么去排错、查错,怎么去看运行结果,怎么去确保程序的正确性上都有了很大程度的能力的提高。
从本次课题对数字滤波器的设计中,我对数字滤波方面的知识有了更深刻的认识,还了解了MATLAB编程方面的知识。
随着信息技术和计算机技术的飞速发展,数字信号处理技术在众多领域得到广泛应用。
数字滤波器由于其精度高、稳定性好、使用灵活等优点,广泛应用在各种数字信号处理领域。
数字滤波方法有很多种,每种方法有其不同的特点和使用范围,常用的有以下几种滤波方法,即限幅滤波法,中值滤波法,算数平均值滤波法,递推平均滤波法,加权递推平均滤波法,一阶惯性滤波法,中位值平均滤波法,限幅平均滤波法。
在设计过程中也遇到了一些问题,当然通过查阅相关资料,对这些都做到了解决。
但是这次设计还是有很多不足之处,所以还有待完善。
这也使我明白了,事情是在不断的完善中,当你达到一定高度后,一定还可以做得更好。
课程设计是一个很好的锻炼动手能力的机会,虽说只有短短一周多的时间,但是我受益匪浅。
参考文献
[1]于海生.《微型计算机控制技术》.北京:
清华大学出版社.2006.8
[2]高俊斌.《MATLAB5.0语言与程序设计》.武汉:
华中科技大学出版社.1999.1
[3]高西全.《数字信号处理》.西安:
西安电子科技大学出版社.2008.8
[4]孙兆林.《MATLAB6.x图像处理》.北京:
清华大学出版社.2002.6
[5]潘新民.《微型计算机控制技术实用教程》.北京:
电子工业出版社.2006.1
[6]徐安等.《微型计算机控制技术》.北京:
电子工业出版社.2008.10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字滤波器 设计