电赛汇总(三):硬件处理算法设计

电赛汇总(三):硬件处理算法设计

这一章节主要详细记录各种系统的反馈和处理算法,比如PID、大林、模糊控制、压缩、滤波、拟合等算法,以便随时查看翻阅。这部分内容出自黄根春等学者著的《全国大学生电子设计竞赛教程–基于TI器件设计方法》一书中,感兴趣的朋友可以购买翻阅。

3. 3 算法简介

通常系统由数字电路和模拟电路组成,模拟电路主要用于信号的处理,数字电路主要用于采集和控制系统。系统控制通常在单片机或可编程逻辑器件中通过软件实现,这些软件控制思想经过累积、总结,最后形成算法思想。算法可实现系统控制、数据压缩和恢复、数字滤波等功能,熟悉这些算法的控制原理和实现方法有利于完善系统的控制。

3.3.1 数字PID控制算法

在连续时间控制系统中,PID控制器应用非常广泛,其设计技术成熟,长期以来形成了典型的结构,参数整定方便,结构更改灵活。由于计算机程序的灵活性,数字PID控制比连续 PID控制更为优越。

3.3.1.1 PID控制系统简介

连续时间 PID控制系统如图3-37所示,D(s)完成 PID控制规律,称为 PID控制器。PID控制器是一种线性控制器,用输出量 y(t)和给定量 r(t)之间误差的时间函数 e(t)=r(t)-y(t) 的比例、积分和微分的线性组合构成控制量 u(t),称为比例(Proportional)、积分(Integrating)、微分(Differ- entiation)控制,简称 PID控制。
PID控制组合了比例控制、积分控制和微分控制这3种基本控制规律,通过改变调节器参数来实现控制,其基本输入/输出关系为
在这里插入图片描述
实际应用中,可以根据受控对象的特性和控制的性能要求,灵活采用比例§控制器、比例+积分(PI)控制器、比例+积分+微分(PID)控制器这3种不同控制组合。

3.3.1.2 PID参数控制效果分析

PID控制的 3基本参数为Kp,KI,KD,经实验测试,可总结出这3个参数的实际控制作用。
比例调节参数(Kp)按比例反映系统的偏差,系统一旦出现偏差,比例调节立即进行。比例调节是主要的控制部分,但过大的比例会使系统的稳定性下降。增大 Kp,系统的反应变灵敏、速度加快、稳态误差减小,但振荡次数也会加多,调节时间加长。
积分调节参数(KI):消除系统静态(稳态)误差 提高系统的控制精度。积分调节会使系统的稳定性下降,动态响应变慢,超调加大。积分控制一般不单独作用,而是与P或者PD结合作用。
微分调节参数(KD):反映系统偏差信号的变化率,可以预见偏差的变化趋势,产生超前控制作用,使偏差在未形成前已被消除。因此,微分控制可以提高系统的动态跟踪性能,减小超调量,但对噪声干扰有放大作用,过强的微分调节会使系统剧烈振荡,对抗干扰不利。
常规的PID控制系统中,减少超调和提高控制精度难以两全其美,主要是由积分作用有缺陷造成的。如果减少积分作用,静差不易消除,有扰动时,消除误差速度变慢;而加强积分作用时,又难以避免超调,这也是常规PID控制中经常遇到的难题。

3.3.1.3 数字PID控制的实现

数字 PID控制是通过算法程序实现PID控制的。数字控制系统大多数是采样数据控制系统,进入系统的连续时间信号必须经过采样和量化后转换为数字量,方能进行相应的计算和处理,不论是积分还是微分,只能用数值计算去逼近。当采样周期相当短时,用求和代替积分,用差商代替微商,将描述连续时间 PID算法的微分方程变为描述离散时间 PID算法的差分方程。数字 PID控制通常有以下两种实现。
1.位置式PID 控制算法
图3-38为位置式PID控制算法的实现框图,根据此框图得到差分方程为
在这里插入图片描述
此式是数字 PID算法的非递推形式,称全量算法,其中 u₀为控制量基值(n=0时的控制量);u。为第 n个采样时刻的控制量;Ts为采样周期。算法中为实现求和,必须存储系统偏差 的全部值 e,
在这里插入图片描述
得出的全量输出 uₙ是控制量的绝对数值,这种控制量确定了执行机构在控制系统中的位置(如衡门控制中,输出对应阀门的位置),因此将这种算法称为“位置算法”。
2. 增量式PID控制算法
当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去驱动步进电机)时,需要用 PID的“增量算法”,其简化示意图如图3-39所示。
在这里插入图片描述
增量式PID算法的差分方程为
在这里插入图片描述
此时已看不出P、I、D作用的直接关系,只能体现各次误差量对控制作用的影响,但处理时只需要存储最近的3个误差采样值。

3.3.1.4 PID算法的饱和特性

实际的控制系统存在着饱和特性(当控制变量达到一定值后,系统的输出变量便不再增长,系统进入饱和区),要求系统的控制变量必须限制在某个范围之内,即
在这里插入图片描述
有时,对控制量的变化率也有限制
在这里插入图片描述
,若超出此范围,系统实际执行的不是控制量的计算值,而是控制量的最值(umax或 umin),达不到预期控制效果,甚至会引起振荡。这种现象在开工、停工或大幅度改变给定值的情况下尤其容易发生,此时需要改进算法。
1.位置算法的改进
位置式 PID算法中“饱和”主要由积分项引起,称为“积分饱和”。克服“积分饱和”的关键是限制积分作用,避免积分积累过大,常用方法有以下几种。
(1) 积分分离法
积分分离法是在误差量较大时不进行积分,直至误差在一定值之内后才在控制量的计算中加入积分累积。差分方程为
在这里插入图片描述
积分分离法如图3-40所示。用此法改进的效果较好,程序简单。
在这里插入图片描述

(2)遇限削弱积分法
这种改进算法的基本思想是:当控制进入饱和区后便不再进行积分项的累加,而只执行削弱积分的运算。这种算法可以避免控制量长时间停留在饱和区。
(3)有效偏差法
这种方法是将实际执行的控制量对应的误差值作为有效误差值进行积分累加,而不是用实际的误差值进行积分累加。
2.增量算法的比例与微分
增量式数字 PID算法中没有累加和项,不会出现积分饱和,避免了大的超调和振荡,但在增量算法中可能出现比例和微分饱和。为抑制微分饱和、加速系统的动态过程,可采用积累补偿法。积累补偿法的基本思想是将那些因饱和而未能执行的控制增量信息累积起来,一旦有可能时再补充执行。

3.3.1.5 PID参数整定方法

1.确定控制器结构
在选择数字 PID控制参数之前,应先确定控制器结构。对允许有静差(或稳态误差)的系统,应适当选择P或PD控制器,使稳态误差在允许的范围内;对必须消除稳态误差的系统,应选择包含积分控制的PI或PID控制器;对于存在滞后的对象,往往都加入微分控制。一般情况下,PI、PID 和P控制器应用较多。
2.选择参数
控制器结构确定后便可以开始选择参数,参数的选择要根据受控对象的具体特性和对控制系统的性能要求进行。工程上,一般要求整个闭环系统是稳定的,对给定量的变化能迅速响应并平滑跟踪,超调量小;在不同干扰作用下,能保证被控量稳定在给定值;当环境参数发生变化时,整个系统能保持稳定等。这些要求,对控制系统自身性能而言,有些是矛盾的。往往应尽量满足主要方面的要求,兼顾其他方面,适当地做折中处理。
工程上 PID控制器参数通常是通过试凑法或实验经验公式来确定的。 Kp、KI、KD较难确定,调节周期可能会很长,要在具体系统中反复调节。确定参数的具体做法在后面会有所介绍。
(1)采样周期的选择
数字 PID控制中需要对控制信号采样,采样周期 Ts是需要精心选择的重要参数,系统的性能与采样周期的选择密切相关,选择时主要考虑的因素分析如下:
①香农(Shannon)采样定理:
在这里插入图片描述
采样定理给出了采样周期的上限,满足时采样信号才能恢复或近似恢复为原模拟信号而不丢失主要信息。采样周期越小,采样数据控制系统的性能越接近于连续时间控制系统。
②闭环系统对给定信号的跟踪要求采样周期要小。
③从抑制扰动的要求来说,采样周期应选择得小一些。
④从执行元件的要求来看,有时要求输入控制信号要保持一定的宽度。
⑤从计算精度考虑,采样周期不宜过短。
⑥从系统成本上考虑,希望采样周期越长越好。
综合上述各因素,应在满足控制系统性能的要求下,尽可能选择低的采样速率。
图3-41 给出了选择采样周期的经验,在试凑过程中可根据此经验来预选采样周期,然后进行多次试凑,选择性能较好的一个作为最后的采样周期。表3-2给出了常用被控量的经验采样周期。
在这里插入图片描述
在这里插入图片描述
(2)采用实验试凑法确定参数
实验凑试是通过闭环运行或模拟,观察系统的响应曲线,根据各参数对系统的影响反复试率,直至出现满意的响应,从而确定 PID 控制参数。
参数的确定主要遵循如下的步骤:
①比例项独立实验。将比例控制作用由小变到大,观察各次响应,直至得到反应快、超调小的响应曲线。
②加入积分项。若在比例控制下稳态误差不能满足要求,加入积分控制。先将步骤①中选择的比例系数减小为原来的50%~80%,再将积分时间置为一个较大值,观测响应曲线。然后减小积分时间,加大积分作用,并相应调整比例系数,反复试凑直至得到较满意的响应,确定比例和积分的参数。
③加入微分项减小超调和振荡。若经过步骤②,PI控制只能消除稳态误差,而动态过程不能令人满意,则应加入微分控制构成PID控制。先置微分时间 逐渐加大 TD,同时相应地改变比例系数和积分时间,反复试凑直至获得满意的控制效果和 PID控制参数。
④划分小控制区间,测取每个区间最适合的 PID参数,参数相同或相近的归并为一组。
PID参数的改变对控制质量的影响并不十分敏感,因而不同的比例、积分、微分组合,可能达到相近的控制效果。实际应用中,只要受控过程或受控对象的主要指标达到设计要求,相应的控制器参数即可作为有效的控制参数。
(3)采用实验经验法确定参数
根据实验经验法调整 PID参数时常用扩充临界比例度法。利用这种方法,参数的整定不依赖于受控对象的数学模型,直接在现场整定,简单易行,适用于有自平衡特性的受控对象。
扩充比例度法整定数字PID控制器参数的步骤是:
①预选一个足够短的采样周期 Ts,一般Ts应小于受控对象纯延迟时间的十分之一。
②用选定的 Ts 使系统工作。去掉积分作用和微分作用,将控制选择为纯比例控制器,构成闭环运行。逐渐减小比例度,即加大比例放大系数 Kp,直至系统对输入的阶跃信号的响应出现稳定边缘的临界振荡,将这时的比例放大系数记为 Kr,临界振荡周期记为 Kr。
③选择控制度。控制度以连续时间 PID控制器为基准,将数字PID的控制效果与之比较。同在最佳整定情况下,数字控制系统的控制品质高于模拟控制系统,因而控制度总是大于1。控制度越大,模拟控制系统品质越差。控制度的选择要从所设计的系统的控制品质要求出发。
④根据所选择的控制度,查实验经验表3-3得出数字PID中相应的参数Ts、Kp、T₁和To。
⑤运行与修正。将求得的各参数值加入PID控制器闭环运行,观察控制效果,并做适当的调整以获得更满意的效果。
当设计对稳定时间和稳定范围有具体要求时,单纯的拟合逼近无法适应动态环境的要求,而 PID控制又难以调整全局。这时通常将PID算法的比例、积分和微分的思想融入分段拟合中,不断地调节各个控制段的系数,最终达到精确控制。
在这里插入图片描述

PID控制算法的控制效果较好,被广泛应用于各种控制领域,并产生了许多新的改进 PID控制方案。本节旨在介绍 PID控制算法的思想及基本实现,具体应用经验和如何改进还需要实验经验作为基础。

3.3.2 大林算法

许多实际工程中经常遇到一些纯滞后调节系统,滞后时间比较长,但要求系统具有较好的动态特性和稳定性、没有超调量或很少超调量。这类系统采用PID算法控制效果往往欠佳,而大林算法对改善滞后给系统带来的不良影响具有良好的效果。由于大林算法对系统的要求有严格限制,也就消除了由于超调引起的系统不稳定等因素的影响,特别适用于微机控制。

3.3.3 模糊控制算法

当系统的影响因素十分复杂、建立精确的数学模型特别困难时,就要使用模糊控制了。模糊控制是以模糊集合论、模糊语言变量及模糊逻辑推理为基础的一种智能化数字控制方法,不用建立数学模型,根据实际系统的输入/输出的结果数据,参考现场的运行经验,就可对系统进行实时控制。

3.3.3.1 模糊控制概述

模糊控制是一种非线性控制,鲁棒性强,干扰和参数变化对控制效果的影响被大大减弱,尤其适合于非线性、动态特性不易掌握及纯滞后系统的控制。
模糊算法是用模糊语言表述一组规则的算法,如:误差是正大、误差的变化是正大,则控制量的变化是负大;误差是正大、误差的变化是正中,则控制量的变化是负大。其中“正大”、“正中”和“负大”等模糊词都可以用模糊子集来表示。对于数字信号来说,就是根据实测数据建立一个对应的系数矩阵,当被控量变化时就从矩阵中找出对应的控制量来加以控制。

3.3.3.2 模糊控制原理

模糊控制算法是建立在人们对对象操作经验基础上的,通过操作经验确定模糊控制规则,使各规则之间有一定的互补性,以便使模糊控制规则在整体上具有相当的可调整性。即使某条规则出问题而被删除,模糊控制仍然可以得到与原来相近的控制效果。
例如在温度控制系统中,制定“温度低,温升慢,则加热控制量较高”、“温度低,温升快,则加热控制量高”、“温度高,温升较快,则加热控制量较高”等规则,这些规则涵盖温度控制系统中所有可能出现的状态特征,采用格式如:if(误差大且偏差率大) then(控制量小)的控制规则来实施对过程的控制。
基本模糊控制器的典型结构如图3-42所示。图中虚线框出的部分为E和 Ec模糊控制器,以被控对象参数的误差 e及误差变化率ec作为输入量,经模糊化后转换成模糊输入,根据输入条件满足的程度和控制规则进行模糊推理,得到模糊输出,该模糊输出经过模糊决策转化成非模糊量后用于过程的调节。
在这里插入图片描述

3.3.3.3 小结

模糊控制器与一般控制器的相似点在于,这些控制器的基本组成环节是一致的,即由控制对象、控制器和反馈通道等环节组成。但模糊控制不受数学模型的束缚,采用模糊控制表,并在实际调试过程中反复经人工修正。因此,确立模糊控制算法,或者说确立模糊规则,是设计模糊控制系统中最重要的环节。
每种控制算法都有自己的不足之处,模糊控制的主要缺陷为:
①没有形成完整的理论体系,没有完整的稳定性和鲁棒性分析、系统的设计方法(包括规则的获取和优化、隶属函数的选取等);
②存在稳态精度比较低、抖动及饱和等问题;
③适应能力有限。

3.3.4 运动控制算法

有些系统需要控制物体按一定规则运动,这时就需要使用运动控制算法实现。Bresenham算法是常用的图形扫描算法,仅使用整数加法和乘 2运算即可实现,产生线段的速度很快,作为运动轨迹的控制效果非常好。由于任何形状的曲线均可以划分为若干个线段的组合,因此先以产生线段的方法来论述 Bre- senham 算法。

3.3.4.1 产生线段的整数Bresenham 算法
3.3.4.2 产生圆的整数Bresenham算法

在这里插入图片描述### 3.3.5 其他控制算法
在各种实际控制系统中,常用的控制算法除了前面介绍的 PID控制算法、大林控制算法和模糊控制算法及它们的改进算法,还有 Smith 预估控制法、分段拟合控制法、神经自适应算法、智能控制算法等。
在这里插入图片描述

分段线性拟合控制法是根据实际情况将被控制量按情况分段,在不同的控制区间里采用线性逼近的方法来实现对对象的控制,逼近时往往会结合PID控制思想来调节参数。
PID控制法必须选择合适的 PID参数,既费时费力又难以推广,且依赖于模型的准确建立,适应性较差,且通常有较大超调,其积分作用的积累也有可能引起系统的振荡。PID只是一种控制思想;Smith 预估控制法不包含滞后环节,更易控制,可获得更高的调节性能。但它只适用于单输入、单输出系统,同时要求有精确的过程模型,当模型发生变化时,控制质量将显著恶化,另外对参数变化十分敏感;多分段线性拟合方案充分考虑到了实际情况,将 PID比例、积分、微分的思想融入其中,而又没有照搬 PID的经验公式,调节起来 比较方便;神经自适应算法能够自动调准控制模型,具有较强的鲁棒性和适应性,可以做到无超调,但是算法实现复杂,不适宜MCU实现;模糊算法实现简单,控制效果良好,但须根据实测数据确定建立模糊控制表,并通过控制表确定模糊控制规则;智能控制算法依据常识建立智能控制规则,当情况发生变化时,控制规则相应变化,因而具有智能性,实现简单,可以达到较好的控制效果。
每个控制系统都有各自不同的控制状况,应根据实际情况来选择合适的控制算法,才能达到实际控制的目的。
对于某些复杂的控制过程,有时难以总结出较完整的经验,尤其当对象动态特性发生变化,或者受到随机干扰的影响时都会影响控制的效果。在实际控制过程中,常将模糊控制与 PID控制、 Smith 预估控制、预测控制及神经网络等其他控制方法结合互补,使控制不断朝着自适应、自组织、自学习的方向发展。
181

3.3.6 压缩算法

有限的信道容量与传输大量数据的需求之间的矛盾且益突出,数据压缩技术作为解决传输和存储问题的有效途径越来越受到重视。数据间存在许多冗余,有的来自信源自身的相关性,有的来自信源概率分布的不均匀性,找到去除相关性或改变概率分布不均匀性的方法就找到了压缩数据的有效途径。
无论是数据压缩的基本理论还是压缩技术,都可以说是种类繁多、应用广泛,现在正处于不断发展之中,有些分支还是当今研究的热点前沿。按照编码失真程度,数据压缩可以分为两个主要的分支:有损压缩和无损压缩。如果压缩对象要求文字或数据丝毫不发生改变,那么无损压缩是必然的选择,但压缩率很有限。有损压缩的原始数据不能由压缩数据完全复原过来,但压缩效率高,适用于图像和数字话语音的压缩。

3.3.6.1 无损压缩

无损压缩的基本思想是找出一种算法,使经处理的数据以一种比较紧凑的格式存放起来,从而达到降低信息所需数据量的目的。前后虽改变了数据格式,但信息没有变化。
1、游程编码
简单地把连续 的单元用一个重复结构代换的压缩方法就是游程长度编码。游程长度编码实现简单,压缩和还原速度快,但对不同文件格式压缩率波动很大,只适用于重复性比较高的数据压缩,如二值图像的压缩。
2、Huffman 编码
Huffman 编码实质是针对统计结果对字符本身重新编码,而不是对重复子串编码。编码效率虽然很高,却需要两次处理:一次统计和一次编码,计算出各字符出现的概率后进行编码,无法实现实时传输和处理,同时会附带较大的概率表。后来改进为一边压缩数据一边动态调整 Huffman 树,成为常用的自适应Huffman 算法(又称为动态 Huffman 算法)。
3、算术编码
算术编码的思想和 Huffman算法的方法有些相似,但 Huffman算法中的每个字符必须用整数个位来表示,而算术编码不管原来的数据有多复杂,都可以算出一个数来代替,压缩率很高,但运算复杂,速度很慢。算术编码和Huffman 编码都是基于字符出现频率的统计结果的编码方法,属于熵编码类,与原始数据的排列次序无关,因此在实时系统中不能使用。
4、LZW编码
LZW编码基于字典编码技术,可有效减少高频子串重复的数据冗余,通常用于文本信息的压缩,是目前最常用和最有效的无损压缩算法。LZW算法由于可以用于流式数据输入,实时性好而受到了欢迎,但算法实现较复杂,压缩效率低,从而限制了它的应用。

3.3.6.2 有损压缩

有损压缩的处理对象主要是声音和图像的模拟信号,以损失一点点压缩质量为代价来换取压缩率的大幅度增长,可利用人的感官特性,去掉感官觉察不到的信息以获得高压缩比。常用的有损压缩方法有:PCM(脉冲编码调制)、预测编码、变换编码(离散余弦变换、小波变换等)、插值和外推(空域亚采样、时域亚采样、自适应等)。
电子设计中最常压缩的是语音信号,语音编码技术可以分为 3类:波形编码、参量编码和混合编码。波形编码是将时域信号直接变换为数字代码,其特点是信号的信噪比高,而其变换的比特率在 64kbps~16kbps,PCM、△M、自适应预测编码(APC)等均属于这一类;参量编码,又叫变换编码,是在信源信号的频率域或其他正交域抽取其特征参量变换为数字代码进行传输的。在接收端则从数字代码回放特征参量,再从参量重建语音信号。参量编码的质量比波形编码低,但可大大提高压缩率,多用于窄带信号;混合编码兼顾了波形编码和参量编码的特点,同时是闭环优化系统,在较低比特率上能够获得较高的语音质量。
1、PCM 编码
将模拟信号量化,然后使已量化值变换成代码,称之为脉冲编码调制(PCM)。PCM原理由抽样、量化、编码3个步骤构成,功能是完成模数转换。PCM编码分为均匀 PCM编码和非均匀 PCM 编码。均匀 PCM是用同等的量化级数进行量化的,完全没有利用语音的性质,所以信号没有得到压缩。非均匀 PCM编码利用语音信号幅度的统计特性,对幅度按对数变换压缩,压缩后的信号作 PCM编码,可提高信噪比。
PCM均匀编解码方式为:信号通过 A/D变换后转换为线性编码,随即直接存入 RAM,再由 D/A 转换回音频信号回放。这种编码方法原理简单、易于实现,且音质很好,几乎不存在失真,但每一个模拟量的采样都需要一个字节的存储空间,存储器的利用率低。
2、△M增量编码
△M增量编码只用一位码记录前后语音采样S(n)、S(n-1)的比较结果,若 S(n)>S(n-1),编为“1”码,反之编为“0”码,这样每个 byte 可以用一个bit来表示,压缩率达到8:1。这种技术可最大限度地加长存储时间,但噪声大,信号失真严重。
在增量调制编码中,量化阶△的选择至关重要。△过大,会引入严重的粒状失真;△过小,会产生斜率过载,造成超越失真。根据 A/D采集的语音信号幅度的大小和实际的调试经验,△取 10左右时可以得到最佳的语音还原。由于超越失真和粒状失真的存在,恢复的语音信号幅度明显没有其他几种编码方式大,并且当输入信号较平坦时,重构信号被一个周期性的方波信号污染,这是由粒状失真造成的。这种编码方法往往要在软件中采取适当措施加以弥补。
3、DPCM编码
DPCM 编码是一种比较成熟的压缩编码方法,通过对信号抽样值与信号预测值的差值进行量化编码,可以压缩数码率,提高存储空间利用率。DPCM系统是一个负反馈系统,采用这种结构可以避免量化误差的积累。但由于它用一个地址存放两个采样差值,即每个差值只能占用4位,除去 1位标志位,有效部分只有3位。所以,当差值超过7时,就当7处理,因而引入的量化噪声较大。这是一种基于两次采集信号之间差值的思想。考虑到 A/D转换器的采样频率较高,相邻两次采样值之间的幅值不大,因此就用半个字节(4bit)存储空间来存幅度的差值,这样RAM中的一个地址就相当于存储了两个采样值,无形中将存储容量扩大了一倍。然而其算法相对复杂,对器件的要求较高。
4. 插值编码
考虑到大多数人发声频率普遍在2kHz左右,可以相应地降低采样频率以提高存储时间,将原来8kHz的采样率下降到 4kHz,但这样也必然牺牲了声音的质量。为了能较好地还原原来的语音,解码时应进行插值。如线性内插的方法,在每两相邻的一对样本值之间插入两样本值的算术平均值;抛物线拟合内插的方法,即用每三个相邻的样本值拟合出一个估计的样值。内插示意图如图3-49所示。
在这里插入图片描述
线性插值法在实际实验中取3个实际值的平均值作为插入值效果更加理想。由于是半采样,而插入的虚拟值不可能完全与原始的真实值相等,所以一定有失真,尤其对语音信号中的高频分量损失很大,在语音还原时有明显表现。

3.3.6.3 压缩算法应用

以上介绍的几种算法都能实现对语音的压缩,但较之实际运用中的各种语音压缩标准,其压缩效率和压缩质量非常有限,但算法简单,占用资源少,适用于简易语音存储回放装置。实际生活中的语音存储和传输有很多其他的压缩算法,尤其以混合编码中的各种算法效果最好、运用最广,每种编码方法都是根据语音信号的不同特点来设置的,其特点介绍如图3-50所示。
在这里插入图片描述

语音编码的研究主要集中于在一定速率和相当的系统复杂性条件下获得高质量的重建语音输出,并有许多实用技术标准面世,设计语音系统时可参考这些标准做压缩算法的改进,算法都是在不断的尝试中发展的。
另外,在数据存储或传输系统中常常要用到数据的压缩技术,主要的简便方法介绍如上,具体算法的选择还要视所需压缩的数据特征而定。

3.3.7 软件滤波

软件滤波是利用 CPU强大的运算功能,通过某种数值运算,达到改变输入信号中所含频率分量的相对比例、或滤除某些频率分量的目的。实验中往往会因为噪声、干扰、温度、环境及元器件或者设备等诸多因素的影响,造成采集到的数据达不到预期效果,例如采集到的“坏点”数据会对数据的分析及结果造成不利的影响。这时可以采用软件滤波的方法对采集到的数据进行处理,减小抖
· 184 ·

动偏差,使采集到的数据尽可能的准确。此外,除了可使用(有源、无源)滤波器对信号或波形进行平滑处理外,还可以先将波形用 A/D转换器采集,然后使用软件滤波,最后通过 D/A转换器输出 波形,同样可以起到对波形的平滑处理和消除毛刺等效果。
软件滤波的方法有很多种,下面介绍常用的几种。不同的滤波方法,其应用场合和环境也不同,应根据具体情况选择使用。

3.3.7.1 限幅滤波
限幅滤波又称为程序判断滤波,根据多次采集到的数据,如果当前采集值与前一次采集的数值相差维持在一定的偏差△D内,则将每次采集到的数据和前一次的数据进行比较,如果它们的差的绝对值小于△D,则本次采集到的数据有效,否则无效舍弃。
这种滤波方法能够克服偶然因素引入的脉冲干扰,也可以消除波形上的尖峰毛刺,但是不能抑制周期性的干扰,而且其对波形处理的平滑度较差,是一种最简单的基本滤波方法,程序设计也非常简单、运算速度快、占用RAM少。
3.3.7.2 中值滤波

将原来的采样间隔△T进行细分,也就是在原来的采样间隔△T内采样N次,然后把 N次采样值按照大小排序,取中间值为本次采样值。
这种滤波方法能够有效地克服偶然因素引起的波动干扰,特别是对于像温度、液位等变化缓慢的被测参数有良好的滤波效果,但是对于流量、速度或者其他快速变化的信号参数则不适合使用这种方法。中值滤波法的程序设计要稍复杂一些,排序可以使用冒泡法或选择排序法等,由于引入了排序算法,所以该方法不能处理速度要求很高的信号。其运算处理速度和占用的 RAM直接受所选择的数值 N决定。

3.3.7.3 算术平均滤波

该方法也是先将原来设计要求的采样间隔△T进行细分,在△T内采样N次,但是对于采集进来的数据不是进行排序,而是进行算术平均,算术平均的结果作为本次采样值。N值的选取比较关键,N值较大者处理信号的平滑度会较高,但是灵敏度降低;相反,N值较小者处理信号的灵敏度提高,但是平滑度降低。
这种滤波方法适用于对具有随机干扰的信号进行处理,并且被处理的信号必须具有一个平均值,信号在这个平均值上下波动。该方法对于高速信号并不适用。其运算处理速度和 RAM的占用率也直接受所选择的数值N决定。

3.3.7.4 递推平均滤波

递推平均滤波又称为滑动平均滤波,是将连续 N个采样值设为一个先入先出的队列,队列的长度为 N,每次采样得到的新数据加入队尾,并扔掉原队列的队首,然后对队列中的 N个数据进行算术平均,获得的结果作为此次采样值。
这种方法对于周期性干扰有良好的抑制作用,平滑度也很高。但是灵敏度较低,对于偶然出现的脉冲干扰的抑制作用较差,不适用于脉冲干扰比较严重的场合,其运算处理速度和 RAM的占用率也直接受 N值影响。

3.3.7.5 中值平均滤波

中值平均滤波也称为防脉冲干扰平均滤波,相当于中值滤波和算术平均滤波思想的结合。连续采样 N个数据,去掉其中的最大值和最小值,求剩下的 N-2个数据的算术平均作为一次采样值。
此法综合了两种滤波法的优点,可以有效抑制、消除脉冲干扰,但也只能用在速度 比较慢的场合,不适合高速环境,运算处理速度和 RAM占有率由N值决定。

3.3.7.6 限幅平均滤波

顾名思义,限幅平均滤波就是将限幅滤波和递推平均滤波的思想结合起来 ,每次采样得到的数据先进行限幅处理,再送入队列进行递推平均滤波处理。
该法也是结合两种滤波法的优点,有效抑制偶然出现的脉冲干扰,可消除由此而引起的采样偏差,但不适用于高速信号的处理,其运算处理和 RAM的占用率直接受 N值影响。

3.3.7.7 一阶滞后滤波

取一个比例常数 k(其中0<k<1),本次输出的结果=k×本次采样值+(1-k)×前一次输出值,当前的输出值不仅受当前采样值的影响,还受前次的输出值影响,影响的程度由k值决定。
该滤波方法适用于波动频率较高的场合,对于周期性干扰具有良好的抑制作用且运算量不大。但是该方法会造成相位滞后,滞后程度取决于k值,灵敏度低,并且不能消除频率高于采样频率一半的干扰信号。

3.3.7.8 加权递推平均滤波

该方法是递推平均滤波的一种改进,在不同时刻采样进来 的数据具有不同的权重。通常情况是距离当前时刻越近的采样值的权重越大(特殊情况除外)。赋予刚刚采样得到的数据的权重越大,则灵敏度越高,但是信号的平滑度降低。
此法适用于有较大纯滞后时间常数的对象和采样周期短的情况。对于变化缓慢、采样周期长的情况,则不能迅速反映系统当前所受干扰的严重程度。该方法占用RAM较多。

3.3.7.9 消抖滤波

设置一个滤波计数器,将每次采样值与当前的有效值比较,如果采样值等于当前有效值,计数器清零;反之,计数器加一,并判断滤波计数器是否达到设定的溢出上限。如果计数器溢出,将本次 的值替换当前有效值,并清零计数器。
此法对变化缓慢的被测参数有较好的滤波效果,并可避免系统在临界值附近时显示器上数值的抖动和控制器的反复开关跳动。但此法不适用于快速变化的参数测量控制。

3.3.7.10 限幅消抖滤波

限幅消抖滤波为限幅滤波和消抖滤波的结合:先进行限幅处理,再进行消抖滤波处理。此方法综合了限幅滤波和消抖滤波的优点,改进了消抖滤波中的一些不足,避免了将干扰值导入系统,但不适用于快速变化的参数。
基本的软件滤波方法如上所述(数字滤波器也属于软件滤波,也有其应用的场合,但是消耗的资源会更大一些),这些软件滤波的方法适用场合不同,要根据不同的环境和被测参数的特征来选择不同的滤波方法,也可以几种方法混合使用,以达到抑制、消除干扰,平滑波形,消除抖动,稳定控制和输出结果的目的。

3.3.8 曲线拟合

传感器转换存在的非线性误差是不可避免的,可以采用拟合的方法进行修正,常用多项式拟合。下面介绍这种拟合方法的 Matlab实现。
Matlab具有强大的数值运算功能和图形处理能力。用 Matlab绘图十分方便,在调用不同绘图函数时调整自变量即可绘出不同颜色的点、线、复线或多重线,可以直观地显现真实数据和拟合后的数据,便于评估拟合效果的好坏。
对于给定的一组数据采用多项式模型对数据组进行拟合称为多项式拟合。其 Matlab实现为
a= polyfit (x, y, n);
polyfit 指令中,x,y是长度相同的被拟合量,其中,x是自变量数据。n是多项式阶数,a是所得的多项式系数,数据类型为数组,系数按阶次从高到低排列。
必须注意两点:
①为保证计算精度,拟合多项式的阶数一般不超过5阶;
②拟合多项式只是在原始数据范围内有可以保证的精度,超出这个范围使用多项式去作预测,一定要很小心。
ye= polyval(a ,x);
ye 是原数据yi的估计值,以 xi为横轴,同时显示 y和 ye,观察拟合效果。
若不采用多项式模型,而采用其他模型进行非线性最小二乘拟合,可使用 Matlab命令 lsqnon- lin、nlinfit等。 以nlinfit为例:
myfun= inline (‘1./x* beta(1).* exp(x* beta(2))+ beta(3)* x+ beta(4)’,‘beta’,‘x’);
beta= nlinfit(x,y, myfun,[0000]);
beta是要求解的参数,nlinfit 的第一输入变量 x、第二输入变量 y是原数据,其中x是自变量;第三输入变量 myfun 是被解函数,用内联函数表达;第四输入变量[0000]是被估参数的初始猜测,数组元素分别与 beta(1)、beta(2)、beta(3)、beta(4)对应。
其具体用法可参见 Matlab的 help。

猜你喜欢

转载自blog.csdn.net/weixin_47567401/article/details/131425018