当面对一个未知系统又不允许去了解内部机理时,人们应该采取什么样的方法去分析呢?几乎每个人都会通过观察或猜测手段来获取这种未知系统的功能。要是未知系统的功能是固定的还好说,但要是重建一个随时间变化的系统功能则面临很大的挑战性。
所有类型的伺服系统,从马达控制到音频系统中的降噪/压缩算法都是难以分析的闭环系统,闭环方法对它们毫无用处, 这使人们预测系统将要发生的事件时变得更加困难,而那些能揭示“黑盒”中某些隐藏变量的算法此时就显得特别有用。
原理上讲,一个系统的脉冲响应通常是用一个无限高及无限窄的脉冲去激励系统而形成的,也就是常说的狄拉克函数。系统的输出就是该系统的脉冲响应,然而实际中很难实现这种理想脉冲。在许多工业和机械应用中,工程师常利用宽带白色噪声来激励系统,以便发现那些谐振频率点和衰减频率点,从而形成特定目标的脉冲响应。这种方法也有缺点,特别是在实时应用场合。
幸运的是还有其它方法。目前已有不少可用于决定、控制和改变某个过程的系统函数(转移函数)的算法,这些算法可广泛用于马达控制、语音重建、自适应预测和信道量化,甚至可在卫星信号传输中用来去除环境噪声。本文将根据采用该算法的滤波器作为模型来评估未知系统的特征。
过去,我们讨论过Luenberger观察器和卡尔曼滤波器。大多数人都听说过卡尔曼滤波器,但很少有人用它,原因是它与被称为统计的“黑色魔盒”有关。有趣的是,所有的材料都是相同的,统计信号过程与确知信号过程使用的是同一定律,采用的是同一变换方法。这次要讨论观察器与系统模型开发中的另外一个目标,即自适应滤波器。
噪声
类似上述系统的主要应用之一是消除噪声。众所周知,噪声无处不在,噪声是对一种形态的描述。象60Hz嗡嗡声或婴儿哭声之类的噪声其大部分能量集中在频谱的某一点,而白噪声或不相关噪声的频谱则要宽得多,也显得更加普遍。本文讨论的滤波器件则适用于任何一种情况。
在开始讨论前,先介绍一下确知过程与随机过程之间的区别。根据物理原理与观察理论,能以合适的精度预测将来度量的物理现象就是确知过程,在这种情况下,用闭环方式来计算或预测行为其实并不困难。
然而,大量的物理现象是不确知的。对于这些现象,每次实验会产生唯一的不可重复的历史记录,并且人们不能预测其详细情况。这些数据与物理现象就具有随机性。
随机过程有二种,即平稳和非平稳过程。可以把随机过程看成是同时发生的所有样本函数的无限集合,此时,实验数据被收集进历史记录(数据序列),所有历史记录的全体被称为一个集合,这个集合定义了描述某个现象的随机过程。当样本的平均值与绝对时间无关时就是平稳过程,反之则称为非平稳的随机过程。
那么怎样才能知道某个过程是平稳的呢?一般来说如果一个过程有起点或有终点,那么该过程很有可能是非平稳的过程。如果某个过程持续时间比它的最低频谱分量长得多,那么它可能就是平稳过程(至少在它的大部分生存期内是平稳的)。由于平稳的随机过程与实际时间无关,因此比较容易处理和分析。然而实际上没有真正的平稳过程存在,只有那些训练用案例才可能是平稳过程。
就如大多数工程师所关心的那样,下面要讨论的主要是平稳随机过程。
平稳数据
有了上述包含历史记录的集合,数据的平均值就能在任何指定时间用电脑计算出来。白噪声是很多噪声中的一种,它是一种零均值随机信号,也就是说它的平均值为零,此时可以用积分来表达:
这个积分结果的极限接近于平均值的和。在该公式中,符号E[x]代表统计性期望值或类似的概念。该类型信号的一个非常有用的特点是非相关性。
过程的另外一个重要参数是标准偏差。人们可以将标准偏差作为指标来衡量任意种类信号的近似值与实际信号之间的接近程度。标准偏差或变量表达式为:
这个等式读作“偏差值和期望值的均方”,它表明了与理想值的相差程度,也是对实际估算值接近程度的度量。
这些定义和公式不仅可以用于随机信号,还可用于其它任意信号。
相关性
在信号处理中相关性是个功能强大的工具,当信号中混合有复杂的很难用简单的算术表达式描述的宽带噪声时尤其管用。本文将信号视为一个以平均值描述的随机序列,并用自相关与互相关方法来求和。
零均值白噪声的功率或能量是不集中的。无论是什么样的信号区域,它都占满整个频谱,但是具有确定频率的信号分量会把它们的能量集中起来,并以尖峰形态表示。因此根据这个原理可以在噪声环境如机械系统中检测出极其微弱的信号。
互相关函数主要应用于模式识别与信号检测。大家知道,将一个信号注入另一个信号中是度量第二个信号在第一个信号中占有多少成分的一种方法。这样可以将已知信号检测出来作为相当复杂信号的分量。如果先将目标信号记录下来,再加入零均值的噪声,然后将原始信号注入综合后的信号中,那么就可以还原出原始的信号:
自相关性是一种特殊的相关函数。与互相关性中二个不同变量之间的相关性不同,自相关性代表的是同一变量在不同时间的值x[m]和x[m+n]之间的相关性,这里n表示延时。自相关性同样也会产生对应于上述数据序列的功率谱。利用自相关性人们就可以确定在被研究信号中具有一定功率的信号频率。
当自相关性用来检测非随机过程时,通常只有第一个自相关性(延时1)有用。
如何生成观察器?
下面要讨论的观察器非常类似于Luenberger观察器,它是一个简单的自适应滤波器。一般的自适应滤波器采用的是标准FIR或IIR滤波器,但这里需要修改一下系数以便其输出能匹配某个参考输出。如果此时能成功跟踪参考输出,那么就可以访问正在被跟踪的所估测目标转移函数中的变量。滤波器的系数构成了系统的脉冲响应,它们的傅里叶变换代表了系统函数。
自适应滤波器可以在FIR或IIR滤波器基础上构建,人们通常选用不对称FIR,这种FIR被定义为:
这里,h[k]代表滤波器系数,x[n]代表输入样本,k是滤波器长度。为了使该滤波器适应变化的环境,需要改变系数h[k]以满足这些条件。现在需要一个参考信号,因此可以假设一个输出为d[n]的未知系统或黑盒子,这里的d[n]称为期望信号。这样,通过对滤波器输出与期望信号的差分运算就可以产生一个误差信号:
在更新滤波器系数时,利用均方误差(MSE)作为最小化标准可以得出:
代入等式4又可得到:
现在就可以得到二种相关性。首先,中间阶段包含了输入序列与期望输出之间的互相关性;其次,输入序列的自相关性代表了输入信号的样本与样本之间的相关性。
通过下面的微分公式可以得到该滤波器的系数:
上述运算的结果是一个函数,是最优化滤波器权重向量加上输入信号自相关后再和输入信号与期望信号之间互相关的卷积。
当然,输入信号的自相关以及输入信号与期望信号间的互相关需要经过很长的运算过程才能得到最优化的滤波器系数,所有这些工作都旨在帮助工程师找到更简单、更快的方法。
如何得到最小均方值?
另外一种不用执行这么多运算就能得到期望值的途径是最小均方(LMS)算法。这是生成自适应滤波器最常用的方式,也是列表1中所示伪随机码的基础。这种算法包含有众人熟悉的最陡下降算法,该算法中每个最接近最优化滤波器权重向量的值是当前权重的总和,并且正比于均方误差值。考虑滤波器当前系数可以得出:
或
(中间等式的第二项就是最后一个等式中的比例常数)。
有人可能会猜到b用于控制算法的收敛速度。b值越大,收敛速度越快(但不稳定的可能性也越大)。这里有个公式可以用来确定b的最佳值,此时状态既是稳定的,收敛速度也最快:
公式中N表示滤波器的长度,Px是输入信号的平均功率 ,该滤波器如图1所示。
在表1的伪随机码中,样本是将要处理的数据点数,Xn[]是包含数据点的矩阵,而Yn[]是输出矩阵。滤波器系数存储于coefs[]。矩阵Dn[]包含了所期望的输出,误差代表期望值与实际输出值之间的差别,beta是控制滤波器收敛速度的变量。N是滤波器的长度。大家可以看到,本例中的滤波器系数可以用来确定任意时间的脉冲响应与系统函数。
作者简介:
Don Morgan是Ultra Stereo实验室的高级工程师兼顾问,在信号处理、嵌入式系统、硬件和软件方面有25年的丰富经验。他曾著有一本有关数学算法的书,书名为《DSP系统的C语言数字算法》,主要内容是多速信号处理和小波算法。同时他还是《实用DSP建模、技巧和C语言编程》以及《嵌入式系统的数学算法》等书的作者。他的联络邮件地址是:dgm@。