自适应滤波器的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自适应滤波器的实现
0 简介
所谓自适应滤波器,就是利用前一时刻己经获得的滤波器参数的结果,自动地调节现在时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。该系统就是利用前一时刻已经获得的滤波器参数等结果,自动的调节现在有的时刻的滤波器参数,以适应信号或噪声或未知的或随时间变化的统计特性,从而实现最优滤波,如图1所示,自适应滤波器的相关输入信号()x n 、输出信号()y n 、期望响应()d n 和误差信号()e n 构成,一旦输入信号发生变化,自适应滤波器能够跟踪其变化并自动调节参数,使滤波器性能重新达到最佳。因此自适应滤波器具有“自我调节”和“跟踪”能力[12]。
图1 自适应滤波器结构图
根据环境的改变,使用自适应算法来改变滤波器的参数和结构,这是自适应滤波器自身最明显也是其最大的优势。一般情况下,不改变自适应滤波器的结构,而自适应滤波器的系数是由自适应算法更新的时变系数,即其系数自动连续地适应于给定信号,以获得期望响应。自适应滤波器的最重要的特征就在于它能够在未知环境中有效工作,并能够跟踪输入信号的时变特征。
自适应滤波器的输入输出关可用如下的差分方程来表示:
00()()()l l
i i i i y n a x n i b y n i ===---∑∑ (8)
公式中()y n ,()x n 分别表示滤波器的输出和输入,并且M (l ≥)是滤波器的阶数。在系统识别领域中,上述差分方程对应的传递函数为:
11()()()n i i i n j
i
j a z A z H z B z b z ====∑∑ (9) 可以将自适应IIR 滤波器的设计当作优化问题,将均方误差(MSE )作为目标函数,即
211()[()()]
N i i E w d n y n N ==-∑ (10)
公式中:N 是该滤波器的评价长度,()d n ,()y n 是对象和滤波器的输出[13]。
1 系数编码
在自适应滤波器的应用中,系统识别是一个研究的热点,即:利用某种算法来确定滤波器的系数i a ,i b (本文中使用PSO 算法作为应用算法),使得(8)式中的均方误差函数
211()[()()]
N i i E w d n y n N ==-∑ (15)
为最小。显然这是一个多维变量的寻优问题,因此使用PSO 算法来求解上述优化问题。
在应用PSO 算法设计滤波器的时候,适应度函数的求解是一个很重要的问题,该算法通过适应度函数来确定粒子当前位置的优劣,因此粒子的适应度函数值越小表明该粒子的确定的参数越优,算法中的粒子就对应较优的滤波器系数。算法结束之后,整个运行期间适应度之最小的粒子所代表的参数值就是算法得到的最优解,也就是最终得到的滤波器系数。这里选择的函数式(8)作为IIR 滤波器设计的适应度函数。
在应用PSO 算法设计自适应滤波器的时候使用粒子所代表的参数值作为目标滤波器的系数。这样就存在了这样的一个问题,就是如何分配这些被确定的参数作为系数,也就是一个将滤波器系数编码为粒子参数的问题。为了较好的运用PSO 算法通过适应度函数来确定目标滤波器系数,将这些系数进行了编码,以形成PSO 算法中粒子的系数。根据PSO 算法的本身的特点,可以直接使用实数来表示各个参数因此可以直接将滤波器系数作为参数应用到自适应IIR 滤波器的设计中来。从而粒子可以表示成如下所示:
11,,,,,i j b b a a (16)
采用编码结构的粒子是一个i j +维的向量。
最后会得到输出的gbest ,也就是全局最优的值,这样就会得到期望的自适应的滤波器的系数[6,7]。
2 PSO 算法实现模块
模块(1):设定粒子群最优化算法的参数,包括群体大小,参数维数,加权因子等; 虽然粒子群优化算法并没有许多需要调节的参数,但是这些参数直接影响着算法的性能以及收敛问题。下面分别介绍这些参数及其设置。
加权参数:ω,一般设定在0.9到0.4之间。通过大量实验证明:如果ω算法的进行而线性减小那么将显著改善算法的收敛性能。min ω为最小权值,max ω为最大权值。
加速常数:c1和c2代表了粒子向自身极值pbest 和全局极值gbest 推进的随机加速权值。小的加速常数值,可使粒子在远离目标区域内振荡,而大的加速常数值可使粒子迅速向目标区域移动,甚至又离开目标区域。如果c1=c2=0,则粒子将以当前速度飞行,直到边界。此时,由于粒子只能搜索有限的区域,故很难找到好的解。
当c1=0,则粒子没有认知能力,亦即“只有社会(social-only )”的模型。在粒子相互作用下,算法有能力达到新的搜索空间,其收敛速度比标准算法更快,但碰到复杂问题,比标准算法更容易陷入局部极点。
当c2=0,则粒子之间没有社会信息共享,亦即“只有认知(cognition )”的模型。由于个体之间没有交互,一个规模为m 的群体等价于m 个单个粒子的运行,因而得到最优解的概率非常小。在实际应用中根据一些学者的研究设定c1=c2为2或者1.4。后来Clerc 和其他一些研究者提出了一些其它值,但实际上这些也只是局限于某些问题,无法推广应用。
粒子数目:即种群的大小一般取20至200。实验表明,对于大多数问题来说,20个粒子就可以取得很好的结果,不过对于比较难的问题或者特殊类别的问题,粒子数目可以取到100或200。另外,粒子数目越多,算法搜索的空间范围就越大,也就更容易发现全局最优解。当然,算法运行的时间也较长;
粒子长度:粒子长度就是问题的维数,它由具体优化问题确定。比如,对于一个具有10个参数的寻优问题,粒子长度就可以设置为10;
粒子范围:粒子范围同样由具体优化问题确定,通常把问题的参数取值范围设置为粒子的范围。另外,粒子每一维可以设置不同的范围;
粒子最大速率:粒子最大速率决定粒子在一次飞行中可以移动的最大距离,因此必须限制粒子最大速率,否则粒子就可能跑出搜索空间。粒子最大速率通常设定为粒子范围的宽度。比如,粒子范围为(-10,10),则粒子最大速率就可以设置为2;
算法终止条件:与遗传算法相似,粒子群优化算法的终止条件一般可以设置为达到最大进化世代数或者满足一定的误差准则;