常用7种软件滤波
audition 降噪参数

audition 降噪参数Audition降噪参数:提升音频质量的关键在音频处理领域,降噪是一项重要的技术,旨在减少或消除音频信号中的噪音,提升音频的质量和清晰度。
Audition作为一款专业的音频编辑软件,提供了一系列降噪参数,可以帮助用户有效地去除噪音,使音频更加纯净。
本文将介绍一些常用的Audition降噪参数,并探讨它们的作用和使用方法。
1. 高频滤波器(High Pass Filter)高频滤波器是一种常见的降噪参数,用于去除音频信号中的低频噪音。
低频噪音通常是由于设备本身的噪声或环境噪声引起的,使用高频滤波器可以将低频噪音过滤掉,使音频更加干净。
在Audition 中,用户可以通过调整高频滤波器的截止频率来控制过滤效果。
2. 降噪(Noise Reduction)降噪是Audition中最常用的降噪参数之一,它通过分析音频信号的频谱,识别出噪音的特征,并将其减弱或消除。
Audition提供了多种降噪算法,如自适应噪声门和噪声纹理恢复等,用户可以根据具体的音频特点选择合适的降噪算法和参数。
3. 音频增益(Audio Gain)音频增益是调整音频信号的增益水平,用于提高音频的音量和清晰度。
在降噪过程中,由于噪音的减弱,音频信号的整体能量也会下降,因此适当调整音频增益可以使音频恢复到正常的音量水平。
4. 音频修复(Audio Restoration)音频修复是一种高级的降噪技术,用于修复受损或破坏的音频信号。
在Audition中,用户可以使用音频修复工具箱中的一系列工具,如点击和噪声移除等,对音频进行修复和恢复,使其回到原本的清晰状态。
5. 混响(Reverb)混响是一种特殊的噪音,通常是由于音频信号在封闭空间中反射造成的。
在Audition中,用户可以使用混响参数来模拟不同的混响环境,从而减少或消除音频中的混响噪音。
6. 动态处理(Dynamic Processing)动态处理是一种通过调整音频信号的动态范围,来改善音频质量和清晰度的技术。
10种简单的数值滤波方法

单片机利用软件抗干扰的几种滤波方法1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效;如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。
B、优点:能有效克服因偶然因素引起的脉冲干扰。
C、缺点无法抑制那种周期性的干扰,平滑度差。
2、中位值滤波法A、方法:连续采样N次(N取奇数),把N次采样值按大小排列,取中间值为本次有效值。
B、优点:能有效克服因偶然因素引起的波动干扰,对温度、液位的变化缓慢的被测参数有良好的滤波效果。
C、缺点:对流量、速度等快速变化的参数不宜。
3、算术平均滤波法A、方法:连续取N个采样值进行算术平均运算,N值较大时:信号平滑度较高,但灵敏度较低;N值较小时:信号平滑度较低,但灵敏度较高;N值的选取:一般流量,N=12;压力:N=4。
B、优点:适用于对一般具有随机干扰的信号进行滤波,这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动。
C、缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用,比较浪费RAM。
4、递推平均滤波法(又称滑动平均滤波法)。
A、方法:把连续取N个采样值看成一个队列,队列的长度固定为N,每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则),把队列中的N个数据进行算术平均运算,就可获得新的滤波结果。
N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4。
B、优点:对周期性干扰有良好的抑制作用,平滑度高,适用于高频振荡的系统C、缺点:灵敏度低,对偶然出现的脉冲性干扰的抑制作用较差,不易消除由于脉冲干扰所引起的采样值偏差,不适用于脉冲干扰比较严重的场合,比较浪费RAM。
5、中位值平均滤波法(又称防脉冲干扰平均滤波法)A、方法:相当于“中位值滤波法”+“算术平均滤波法”,连续采样N个数据,去掉一个最大值和一个最小值,然后计算N-2个数据的算术平均值,N值的选取:3~14,B、优点:融合了两种滤波法的优点,对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。
计算机控制系统课后习题答案

1-1 什么是计算机控制系统?画出一个实际计算机控制系统原理结构图,并说明一个计算机控制系统由哪些部分组成及各部分的作用。
利用计算机参与控制的系统称为计算机控制系统。
1-2 简述计算机控制系统的控制过程。
实时数据采样实时计算控制量实时控制实时管理1-3 实时、在线方式和离线方式的含义是什么?(1)实时:所谓“实时”,是指信号的输入、计算和输出都是在一定时间范围内完成的,超出了这个时间就会失去控制时机,控制也就失去了意义。
(2)“在线”方式:生产过程和计算机系统直接连接,并接受计算机直接控制的方式称为在线或联机方式。
(3)“离线”方式:若生产过程设备不直接与计算机相连接,其工作不直接受计算机的控制的方式叫做“脱机”方式或“离线”方式。
1-4 计算机控制系统的硬件由哪几部分组成?各部分的作用是什么?主机:这是微型计算机控制系统的核心,通过接口它可以向系统的各个部分发出各种命令,同时对被控对象的被控参数进行实时检测及处理。
输入输出通道:这是微机和生产对象之间进行信息交换的桥梁和纽带。
(3)外部设备:这是实现微机和外界进行信息交换的设备,简称外设,包括人机联系设备(操作台)、输入输出设备(磁盘驱动器、键盘、打印机、显示终端等)和外存贮器(磁盘)。
(4)生产过程装置a.测量变送单元:为了测量各种参数而采用的相应检测元件及变送器。
b.执行机构:要控制生产过程,必须有执行机构。
1.5 计算机控制系统的软件由哪几部分组成?各部分的作用是什么?就功能来分,软件可分为系统软件、应用软件及数据库。
系统软件:它是由计算机设计者提供的专门用来使用和管理计算机的程序。
系统软件包括:a.操作系统:即为管理程序、磁盘操作系统程序、监控程序等;b.诊断系统:指的是调节程序及故障诊断程序;c.开发系统:包括各种程序设计语言、语言处理程序(编译程序)、服务程序(装配程序和编辑程序)、模拟主系统(系统模拟、仿真、移植软件)、数据管理系统等;d.信息处理:指文字翻译、企业管理等。
常用滤波方法

1、限幅滤波法(又称程序判断滤波法)2、A、方法:3、根据经验判断,确定两次采样允许的最大偏差值(设为A)4、每次检测到新值时判断:5、如果本次值与上次值之差<=A,则本次值有效6、如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值7、B、优点:8、能有效克服因偶然因素引起的脉冲干扰9、C、缺点10、无法抑制那种周期性的干扰11、平滑度差12、13、2、中位值滤波法14、A、方法:15、连续采样N次(N取奇数)16、把N次采样值按大小排列17、取中间值为本次有效值18、B、优点:19、能有效克服因偶然因素引起的波动干扰20、对温度、液位的变化缓慢的被测参数有良好的滤波效果21、C、缺点:22、对流量、速度等快速变化的参数不宜23、24、25、26、3、算术平均滤波法27、A、方法:28、连续取N个采样值进行算术平均运算29、N值较大时:信号平滑度较高,但灵敏度较低30、N值较小时:信号平滑度较低,但灵敏度较高31、N值的选取:一般流量,N=12;压力:N=432、B、优点:33、适用于对一般具有随机干扰的信号进行滤波34、这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动35、C、缺点:36、对于测量速度较慢或要求数据计算速度较快的实时控制不适用37、比较浪费RAM38、39、4、递推平均滤波法(又称滑动平均滤波法)40、A、方法:41、把连续取N个采样值看成一个队列42、队列的长度固定为N43、每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)44、把队列中的N个数据进行算术平均运算,就可获得新的滤波结果45、N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~446、B、优点:47、对周期性干扰有良好的抑制作用,平滑度高48、适用于高频振荡的系统49、C、缺点:50、灵敏度低51、对偶然出现的脉冲性干扰的抑制作用较差52、不易消除由于脉冲干扰所引起的采样值偏差53、不适用于脉冲干扰比较严重的场合54、比较浪费RAM55、56、5、中位值平均滤波法(又称防脉冲干扰平均滤波法)57、A、方法:58、相当于“中位值滤波法”+“算术平均滤波法”59、连续采样N个数据,去掉一个最大值和一个最小值60、然后计算N-2个数据的算术平均值61、N值的选取:3~1462、B、优点:63、融合了两种滤波法的优点64、对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差65、C、缺点:66、测量速度较慢,和算术平均滤波法一样67、比较浪费RAM68、69、70、71、72、6、限幅平均滤波法73、A、方法:74、相当于“限幅滤波法”+“递推平均滤波法”75、每次采样到的新数据先进行限幅处理,76、再送入队列进行递推平均滤波处理77、B、优点:78、融合了两种滤波法的优点79、对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差80、C、缺点:81、比较浪费RAM82、83、84、85、7、一阶滞后滤波法86、A、方法:87、取a=0~188、本次滤波结果=(1-a)*本次采样值+a*上次滤波结果89、B、优点:90、对周期性干扰具有良好的抑制作用91、适用于波动频率较高的场合92、C、缺点:93、相位滞后,灵敏度低94、滞后程度取决于a值大小95、不能消除滤波频率高于采样频率的1/2的干扰信号96、97、8、加权递推平均滤波法98、A、方法:99、是对递推平均滤波法的改进,即不同时刻的数据加以不同的权100、通常是,越接近现时刻的数据,权取得越大。
MATLAB的7种滤波方法(重制版)

MATLAB的7种滤波方法(重制版)滤波是信号和图像处理中常用的一种方法,用于去除噪音,增强信号或图像的特征。
MATLAB提供了丰富的滤波函数和工具箱,包括7种常用的滤波方法,分别是均值滤波、中值滤波、高斯滤波、拉普拉斯滤波、Sobel滤波、Prewitt滤波和Canny边缘检测。
1.均值滤波:均值滤波是使用一个窗口对图像进行平滑处理的方法,窗口内的像素值取平均值作为输出像素值。
这种滤波方法可以有效地去除高频噪声,但会导致图像细节的模糊。
2.中值滤波:中值滤波是一种非线性滤波方法,它使用一个窗口对图像进行平滑处理,窗口内的像素值按照大小排序,然后取中值作为输出像素值。
这种滤波方法能够很好地去除椒盐噪声和脉冲噪声,但无法处理其他类型的噪声。
3.高斯滤波:高斯滤波是一种线性平滑滤波方法,它使用一个高斯函数对图像进行卷积处理,窗口内的像素值按照高斯分布加权求和作为输出像素值。
这种滤波方法能够平滑图像并保持图像的细节信息,但会导致图像的边缘模糊。
4.拉普拉斯滤波:拉普拉斯滤波是一种边缘增强滤波方法,它使用一个拉普拉斯算子对图像进行卷积处理,突出图像中的边缘信息。
这种滤波方法能够提高图像的锐度和对比度,但会增强图像中的噪声。
5. Sobel滤波:Sobel滤波是一种边缘检测滤波方法,它使用Sobel算子对图像进行卷积处理,突出图像中的边缘信息。
这种滤波方法能够检测出图像中的水平和垂直边缘,但对于斜向边缘检测效果较差。
6. Prewitt滤波:Prewitt滤波是一种边缘检测滤波方法,它使用Prewitt算子对图像进行卷积处理,突出图像中的边缘信息。
与Sobel滤波类似,Prewitt滤波也能够检测出图像中的水平和垂直边缘,但对于斜向边缘检测效果较差。
7. Canny边缘检测:Canny边缘检测是一种广泛应用的边缘检测算法,它使用多个步骤对图像进行处理,包括高斯滤波、计算梯度、非极大值抑制和双阈值处理。
这种滤波方法能够检测出图像中的所有边缘,并进行细化和连接,对于复杂的边缘检测有较好的效果。
计算机控制技术-试题-总结讲解学习

学习-----好资料1. 若连续信号的最高频率为「max,按采样定理要求,采样频率“应>=2 5 _。
2. 通常在传感器与A/D之间加入调理电路的目的是使模拟输入电压满足A/D转换量程要求_______________ 。
3. 计算机控制系统的输入与输出信号主要分为数字信号与模拟信号。
4. 计算机控制系统的工作过程可归纳为以下三步:实时数据采集、实时控制决策、实时输出控制。
5. 共模干扰的抑制方法主要有:变压器隔离、光电隔离、浮地屏蔽、采用仪表放大器提高共模抑制比。
6. 一般数控系统组成包括:输入装置、输出装置、控制器和插补器等四大部分组成。
7. 控制系统的四大要素是:给定量、执行机构、控制对象以及被控量。
8. 传感器把生产过程的信号转换成电信号,然后用A/D转换器把模拟信号变成数字信号,读入计算机中,对于这样得到的数据,一般要进行一些预处理,其中最基本的处理有线性化处理、标度变换和系统误差的自动校准。
9. 计算机控制中的数字PID控制算法有数字PID位置型控制算法和数字PID增量型控制算法两种基本形式。
10. 经常采用的软件抗干扰技术包括:数字滤波技术、开关量的软件抗干扰技术___________________ 、指令冗余技术____ 、软件陷阱技术等。
11. 采用差分放大器作为信号前置放大是抑制串模干扰的方法之一。
12. 通常把叠加在被测信号上 ____________ 的干扰信号称为串模干扰。
13. 若信号的动态范围为N,计算机字长n > log2 (1+N) _____________ 。
1、计算机控制系统由计算机和被控对象(或生产过程)两部分组成。
计算机控制系统的基本工作原理可以归纳为:实时数据处理、实时监督决策、实时控制及输出。
3、若3 max为被采样的连续信号的最高频率,根据香农采样定理,采样周期必须满足T< n /3 max4、人机接口的作用:一是输入程序或数据,完成各种操作控制;二是显示生产过程的工艺状况与运行结果。
微型计算机控制技术课后答案第二潘新民

第一章1.微型计算机控制系统的硬件由哪几部分组成?各部分作用?(1)主机:这是微型计算机控制系统的核心,通过接口它可以向系统的各个部分发出各种命令,同时对被控对象的被控参数进行实时检测及处理。
主机的主要功能是控制整个生产过程,按控制规律进行各种控制运算(如调节规律运算、最优化计算等)和操作,根据运算结果作出控制决策;对生产过程进行监督,使之处于最优工作状态;对事故进行预测和报警;编制生产技术报告,打印制表等等。
(2)输入输出通道:这是微机和生产对象之间进行信息交换的桥梁和纽带。
过程输入通道把生产对象的被控参数转换成微机可以接收的数字代码。
过程输出通道把微机输出的控制命令和数据,转换成可以对生产对象进行控制的信号。
过程输入输出通道包括模拟量输入输出通道和数字量输入输出通道。
(3)外部设备:这是实现微机和外界进行信息交换的设备,简称外设,包括人机联系设备(操作台)、输入输出设备(磁盘驱动器、键盘、打印机、显示终端等)和外存贮器(磁盘)。
其中作台应具备显示功能,即根据操作人员的要求,能立即显示所要求的内容;还应有按钮,完成系统的启、停等功能;操作台还要保证即使操作错误也不会造成恶劣后果,即应有保护功能.(4)检测与执行机构:a.测量变送单元:在微机控制系统中,为了收集和测量各种参数,采用了各种检测元件及变送器,其主要功能是将被检测参数的非电量转换成电量.b.执行机构:要控制生产过程,必须有执行机构,它是微机控制系统中的重要部件,其功能是根据微机输出的控制信号,改变输出的角位移或直线位移,并通过调节机构改变被调介质的流量或能量,使生产过程符合预定的要求。
4、操作指导、DDC和SCC系统工作原理如何?它们之间有何区别和联系?(1)操作指导控制系统:在操作指导控制系统中,计算机的输出不直接作用于生产对象,属于开环控制结构。
计算机根据数学模型、控制算法对检测到的生产过程参数进行处理,计算出各控制量应有的较合适或最优的数值,供操作员参考,这时计算机就起到操作指导的作用(2)直接数字控制系统(DDC系统):DDC(Direct Digital Control)系统就是通过检测元件对一个或多个被控参数进行巡回检测,经输入通道送给微机,微机将检测结果与设定值进行比较,再进行控制运算,然后通过输出通道控制执行机构,使系统的被控参数达到预定的要求。
计算机控制系统复习点及答案

加黑的为老师讲的重点内容,君可以自由选择怎样去看待它。
一、概念方面(只有判断题加选择题)1、比较计算机控制系统与模拟控制系统的效果。
(结构、信号、功能、时限、工作方式)。
P9~111、计算机控制系统:a、结构:调节器是计算机;b、信号:离散的数字信号;c、功能:以软代硬,可以灵活实现多种控制方案;d、时限:具有实时性;e、工作方式:两种工作方式,在线工作方式和离线工作方式。
2、模拟控制系统从:a、结构:调节器是模拟电路;b、信号:连续的模拟信号;c、功能:各功能电路信息获取、驱动、执行都模拟电路完成;d、时限:信号之间的同步采用延时;e、工作方式:只能在线工作。
△2、计算机控制系统的组成。
典型情况下其中包含模拟量、数字量、连续量、离散量等类型。
P5~6计算机控制系统体系由数字硬件、模拟硬件、系统软件、应用软件四大系统组成。
△3、DAS、DDC、DCS、FCS、CMIS、FCS、SCC的含义。
1、数据采集与处理系统(DAS);2、操作指导控制系统(OGC);3、直接数字控制系统(DDC);4、监督计算机控制系统(SCC);5、集散控制系统(DCS);6、现场总线控制系统(FCS)。
4、过程通道的作用、类型、构成。
P7(可能是简答题之一)作用:处于工业生产过程与主机接口之间,担负着生产过程与交换信息的任务;类型:模拟过程输入/输出通道;开关量过程输入/输出通道;构成:外部通道、检测及变送称为过程通道。
△5、并行I/O口可以实现开关量的检测与控制,开关量的检测用I口,开关量的控制用O口。
如钮子开关、行程开关、接近开关、按钮、继电器触点的状态属于开关量的检测用I口;光电耦合器、三极管、二极管的状态属于开关量的控制用O口。
△6、开关量通过输出口控制由于O口电流只有几个mA,因此需要驱动器。
7、固态继电器(SSR)分为直流SSR和交流SSR。
8、LED数码管有共阴极和共阳极,字型码互反,显示电路有动态显示、静态显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随机误差是有随机干搅引起的,其特点是在相同条件下测量同一个量时,其大小和符号做无规则变化而无法预测,但多次测量结果符合统计规律。
为克服随机干搅引入的误差,硬件上可采用滤波技术,软件上可以采用软件算法实现数字滤波,其算法往往是系统测控算法的一个重要组成部分,实时性很强,采用汇编语言来编写。
采用数字滤波算法克服随机干搅引入的误差具有以下几个优点:(1)数字滤波无须硬件,只用一个计算过程,可靠性高,不存在阻抗匹配问题,尤其是数字滤波可以对频率很高或很低的信号进行滤波,这是模拟滤波器做不到的。
(2)数字滤波是用软件算法实现的,多输入通道可用一个软件“滤波器”从而降低系统开支。
(3)只要适当改变软件滤波器的滤波程序或运行参数,就能方便地改变其滤波特性,这个对于低频、脉冲干搅、随机噪声等特别有效。
常用的数字滤波器算法有程序判断法、中值判断法、算术平均值法、加权滤波法、滑动滤波法、低通滤波法和复合滤波法。
1.程序判断法:程序判断法又称限副滤波法,其方法是把两次相邻的采样值相减,求出其增量(以绝对值表示)。
然后与两次采样允许的最大差值△Y进行比较,△Y的大小由被测对象的具体情况而定,若小于或等于△Y,则取本次采样的值;若大于△Y,则取上次采样值作为本次采样值,即yn - yn-1|≤△Y,则yn有效,yn -yn-1|>△Y,则yn-1有效。
式中yn ——第n次采样的值;Yn-1——第(n-1)次采样的值;△Y——相邻两次采样值允许的最大偏差。
设R1和R2为内部RAM单元,分别存放yn-1和yn,滤波值也存放在R2单元,采用MCS-51单片机指令编写的程序判断法子程序如下:付表2.中值滤波法即对某一参数连续采样N次(一般N为奇数),然后把N次采样值按从小到大排队,再取中间值作为本次采样值。
设DATA为存放采样值的内存单元首地址,SAMP为存放滤波值的内存单元地址,N为采样值个数,用MCS-51指令编写的中值滤波子程序如下:副表3.算术平均值滤波算法算术平均滤波法就是连续取N次采样值进行算术平均,其数学表达式是:Y=∑yi~y=1/N ∑ yii=1……N式中~y——N个采样值的算术平均值;Yi ——第i个采样值;设8次采样值依次存放在地址DATA开始的连续单元中,滤波结果保留在累加器A中,程序如下:副表4.加权平均滤波法算术平均滤波法存在前面所说的平滑和灵敏度之间的矛盾。
采样次数太少,平滑效果差,次数太多,灵敏度下降,对参数的变化趋势不敏感。
协调两者关系,可采用加权平均滤波,对连续N次采样值,分别乘上不同的加权系数之后再求累加和,加权系数一般先小后大,以突出后面若干采样的效果,加强系统对参数的变化趋势的辩识,各个加权系数均为小于1的小数,且满足总和等于1的约束条件,这样,加权运算之后的累加和即为有效采样值。
为方便计算,可取各个加权系数均为整数,且总和为256,加权运算后的累加和除以256(即舍去低字节)后便是有效采样值。
设每批采样8个数据,依次存放在地址DATA开始的单元中,各加权系数是用一个表格存放在ROM中,MCS-51指令编写的算术平均滤波程序如下:副表5.滑动平均滤波法:以上介绍的各种平均滤波算法有一个共同点,即每取得一个有效采样值必须连续进行若干次采样,当采样速度较慢(如双积分型A/D转换)或目标参数变化较快时,系统的实时性不能保证,滑动平均滤波算法只采样一次,将这一次采样值和过去的若干次采样值一起求平均,得到的有效采样值即可投入使用,如果取N个采样值求平均,RAM中必须开辟N个数据的暂存区。
每新采样一个数据便存入暂存区,同时去掉一个最老的数据,保持这N个数据始终是最近的数据,这种数据存放方式可以用环行队列结构方便的实现。
设环行队列为40H-4FH连续16个单元,RO作为队尾指针,滤波程序如下:副表6.低通滤波法:将普通硬件RC低通滤波器的微分方程用差分方程来表求,变可以采用软件算法来模拟硬件滤波的功能,经推导,低通滤波算法如下:Yn=a* Xn+ (1-a) *Yn-1式中Xn——本次采样值Yn-1——上次的滤波输出值;a——滤波系数,其值通常远小于1;Yn——本次滤波的输出值。
由上式可以看出,本次滤波的输出值主要取决于上次滤波的输出值(注意不是上次的采样值,这和加权平均滤波是有本质区别的),本次采样值对滤波输出的贡献是比较小的,但多少有些修正作用,这种算法便模拟了具体有教大惯性的低通滤波器功能。
滤波算法的截止频率可用以下式计算:fL= a/2Pit pi为圆周率 3.14…式中a——滤波系数;t——采样间隔时间;例如:当t=0.5s(即每秒2次),a=1/32时;fL=(1/32)/(2*3.14*0.5)=0.01Hz当目标参数为变化很慢的物理量时,这是很有效的。
另外一方面,它不能滤除高于1/2采样频率的干搅信号,本例中采样频率为2Hz,故对1Hz以上的干搅信号应采用其他方式滤除,低通滤波算法程序于加权平均滤波相似,但加权系数只有两个:a和1-a。
为计算方便,a取一整数,1-a用256-a,来代替,计算结果舍去最低字节即可,因为只有两项,a和1-a,均以立即数的形式编入程序中,不另外设表格。
虽然采样值为单元字节(8位A/D)。
为保证运算精度,滤波输出值用双字节表示,其中一个字节整数,一字节小数,否则有可能因为每次舍去尾数而使输出不会变化。
设Yn-1存放在30H(整数)和31H(小数)两单元中,Yn存放在32H(整数)和33H(小数)中。
滤波程序如下:副表结束语:微型计算机在仪器仪表系统中的成功应用,使传统的电子仪器以及复杂的跟踪测量装置发生了许多革命性变化。
其中一个突出表现就是一个系统中包含了智能性运作。
微机具有很强的分析和运算能力,智能系统可完成复杂的数据处理,智能系统采用软件硬件想结合的方法进行随机误差的数字滤波和系统误差的修正,可以实现实时修正,较准测量数据,这些都是传统仪器难以比拟的。
#include <stdio.h>#include <absacc.h>#include <intrins.h>#include <./Atmel/at89x52.h>#include "source.h"main(){filter_1();filter_2();filter_3();filter_4();filter_5();filter_6();filter_7();filter_8();filter_9();filter_10();}unsigned char get_ad(void){static unsigned char i;return i++;}void delay(void){unsigned char i=0;while(1){i++;if(i>20) return;}}#define A 10 //设置两次采样允许的最大偏差值char value; //上次采用后的有效值变量char filter_1(void){char new_value; //本次采样值变量new_value=get_ad(); //读入本次采样值if((new_value-value>A)||(value-new_value>A)) //比较是否超出最大偏差值return value; //如果超出,返回上次的有效值作为本次的有效值return new_value;// 如果没有超出,返回本次的采样值作为本次的有效值}#define N 11 //设置连续采样的次数char filter_2(void){char value_buf[N]; //缓存N次采样值的存储变量char count,i,j,temp; //i,j是冒泡排序的下标变量,count是采样数据读入的下标变量//temp是临时变量for(count=0;count<N;count++) //连续读入N个采样值{value_buf[count]=get_ad();delay();}for(j=0;j<N;j++) //气泡排序,由小到大{for(i=0;i<N-j;i++){if(value_buf[i]>value_buf[i+1]){temp=value_buf[i];value_buf[i]=value_buf[i+1];value_buf[i+1]=temp;}}}return value_buf[(N-1)/2]; //将排序后N个采样值的中间值作为最后结果返回}#undef N#define N 12 //设置每组参与平均运算的采样值个数char filter_3(){int sum=0; //求和变量,用于存储采样值的累加值char count;//采样数据读入的下标变量for(count=0;count<N;count++) //连续读入N个采样值,并累加{sum+=get_ad();delay();}return (char)(sum/N); //讲累加值进行平均计算作为返回值}#undef N#define N 12 //设置FIFO队列的长度char value_buf[N];//FIFO队列变量char i=0; //队列的下标变量char filter_4(){char count;int sum=0;value_buf[i++]=get_ad();if(i==N) i=0;for(count=0;count<N;count++)sum+=value_buf[count];return(char)(sum/N);}#undef N#define N 12 //设置每组采样值的数量char filter_5(){char count,i,j,temp; //i,j是冒泡排序的下标变量,count是采样数据读入的下标变量char value_buf[N]; // 缓冲N个采样值的存储变量int sum=0; //求和变量,用于存储采样值的累加值for (count=0;count<N;count++) //连续读入N个采样值{value_buf[count] = get_ad();delay();}for (j=0;j<N-1;j++) //气泡排序,由小到大{for (i=0;i<N-j;i++){if ( value_buf[i]>value_buf[i+1] ){temp = value_buf[i];value_buf[i] = value_buf[i+1];value_buf[i+1] = temp;}}}for(count=1;count<N-1;count++)sum += value_buf[count]; //去掉两端的最小和最大采样值,对中间的N-2个采样值求和return (char)(sum/(N-2));// 返回中间N-2个采样值的平均值}#undef A#undef N#define A 10 //设置两次采样允许的最大偏差值#define N 12 //设置每组参与平均运算的采样值个数char value; //上次采用后的有效值变量char filter_6(){char new_value; //本次采样值变量int sum=0; //求和变量,用于存储采样值的累加值char count;//采样数据读入的下标变量for(count=0;count<N;count++){new_value=get_ad(); //读入本次采样值if((new_value-value>A)||(value-new_value>A)) //比较是否超出最大偏差值new_value=value; //如果超出,返回上次的有效值作为本次的有效值sum+=new_value; //累加采样的有效值value=new_value;delay();}return (char)(sum/N); //将累加值进行平均计算作为返回值}#define COE 50 //定义加权系数char value; //上一个采样值变量char filter_7(){char new_value; //本次采样值变量new_value = get_ad();return (100-COE)*value + COE*new_value; //返回的本次滤波结果}#undef N#define N 12 //设置FIFO队列的长度char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12}; //加权系数char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;char filter_8(){char count; //采样数据读入的下标变量char value_buf[N]; //缓存N个采样值的存储变量int sum=0; //求和变量,用于存储采样值的累加值for (count=0;count<N;count++){value_buf[count] = get_ad(); //读入采样值delay();}for (count=0;count<N;count++)sum += value_buf[count]*coe[count]; //累加采样值和系数的乘积return (char)(sum/sum_coe); //累加值与系数和相除作为返回结果}#undef N#define N 12 //设置计数器溢出值char filter_9(){char count=0; //计数变量char new_value; //本次采样值变量new_value = get_ad(); //读入本次采样值while (value !=new_value);{count++; //计数器加1if (count>=N) return new_value; //如果本次采样值与当前有效值不相等,//且计数器溢出,返回本次采样值delay();new_value = get_ad();}return value; //如果本次采样值与当前有效值相等,则返回当前有效值}#undef A#undef N#define A 10 //设置两次采样允许的最大偏差值#define N 12 //设置计数器溢出值char value; //有效值变量char filter_10(){char count=0; //计数变量char new_value; //本次采样值变量new_value = get_ad(); //读入本次采样值if((new_value-value>A)||(value-new_value>A)) //比较是否超出最大偏差值new_value=value; //如果超出,返回有效值作为本次的采样有效值while (value !=new_value);{count++; //计数器加1if (count>=N) return new_value; //如果本次采样值与当前有效值不相等,//且计数器溢出,返回本次采样值delay();new_value = get_ad();}return value; //如果本次采样值与当前有效值相等,则返回当前有效值}。