本发明属于IIR数字滤波器设计技术领域,涉及一种基于混合蛙跳的IIR数字滤波器设计方法。
背景技术:
IIR(Infinite Impulse Response,无限脉冲响应)数字滤波器具有高精度、低延迟的特点,可以以较低的阶数获得较高的滤波性能,已经在数字通信、生物医学以及多媒体处理等诸多领域得到了广泛应用。
基于优化算法进行滤波器设计是IIR数字滤波器设计的一种主要方法,而智能优化算法是优化算法的一个重要分支。虽然已有研究人员分别将遗传算法、粒子群算法和人工鱼群算法成功应用于IIR数字滤波器设计,但遗传算法和粒子群算法容易陷入局部最优,人工鱼群算法虽然具有较强的全局寻优能力,但存在多种更新模式且需要反复计算鱼群中心位置等参数,因此算法设计复杂、迭代速度慢。混合蛙跳算法是一种新型的仿生物学智能优化算法,其集模因演算法和粒子群算法的优点于一身,具有很快的迭代速度和较强的全局寻优能力,且参数少、算法设计简单、易于实现,将其成功应用于IIR数字滤波器设计具有重要意义。
技术实现要素:
(一)发明目的
本发明的目的是:针对现有智能优化IIR数字滤波器设计方法存在的算法设计复杂、迭代速度慢、全局寻优能力差等问题,提出一种简单高效的基于混合蛙跳的IIR数字滤波器设计方法。
(二)技术方案
为了解决上述技术问题,本发明提供一种基于混合蛙跳的IIR数字滤波器设计方法,其包括如下步骤:
1)确定频率采样点数,计算理想幅频响应样本值;
2)针对混合蛙跳算法建立IIR数字滤波器参数评估方法;
3)将混合蛙跳算法映射到IIR数字滤波器设计中,进行参数和蛙群初始化;
4)蛙群排序、分组;
5)更新公告栏;
6)基于步骤2)参数评估方法对每组青蛙进行更新;
7)蛙群混合;
8)蛙群排序、分组;
9)再次更新公告栏;
10)根据迭代终止条件判断是否终止迭代。
其中,所述步骤1)中,频率采样点数为用户自定义的正整数,表明该方法在计算实际幅频响应与理想幅频响应的差值时,需要采集的频率点数;计算理想幅频响应样本值,是根据用户确定的频率采样点数,将所理想的滤波器理想幅频响应进行等间隔采样,得到理想幅频响应样本值。
其中,所述步骤2)中,IIR数字滤波器参数评估方法的建立过称为:首先根据混合蛙跳算法得到的滤波器系数计算该滤波器的极点,如果有极点不在单位圆内,则将该极点移到单位圆内,然后计算滤波器幅频响应的样本值;之后计算该滤波器的增益;最后计算该滤波器幅频响应样本值与滤波器理想幅频响应样本值的平方误差,平方误差越小,表明该滤波器与理想滤波器的幅频响应越接近,即待评估的滤波器参数组合越好。
其中,所述步骤3)中,将IIR数字滤波器设计中所需要的参数数目,映射为混合蛙跳算法中青蛙所处空间的维数,将IIR数字滤波器参数的取值范围映射为青蛙在每维空间的取值范围,将IIR数字滤波器的参数组合定义为青蛙在所处空间的具体位置,并将该参数组合对应的滤波器幅频响应的样本值与滤波器理想幅频响应样本值的平方误差作为评价该青蛙优劣的指标,平方误差越小表明该青蛙越优;参数初始化,是指定义蛙群中青蛙的总数、青蛙的分组数目、青蛙所处空间的维度和迭代终止条件,其中青蛙总数为分组数目的整数倍,迭代终止条件为最大迭代次数;蛙群初始化,是指为每只青蛙随机生成一个初始位置的过程。
其中,所述步骤4)中,蛙群排序分组是首先将蛙群中所有青蛙按照所对应滤波器从优到劣的顺序排序,然后从最优青蛙开始,第一只青蛙放入第一分组,第二只青蛙放入第二分组,以此类推,当最后一个分组分配完成后,再将剩余青蛙重新从第一个分组开始放入,直至所有青蛙分组完成。
其中,所述步骤5)中,更新公告栏是指统计青蛙信息,找到全局最优青蛙和每组最优、最差青蛙,记录对应的滤波器系数、增益和与理想滤波器幅频响应的平方误差。
其中,所述步骤6)中,基于步骤2)参数评估方法对每组青蛙进行更新是指在每组内,最差青蛙首先向组内最优青蛙跳跃,并使用步骤2)的参数评估方法评估跳跃结果,如果跳跃后位置优于原位置,则完成跳跃过程,否则令最差青蛙向全局最优青蛙跳跃,再使用步骤2)的参数评估方法评估跳跃结果,如果跳跃后位置优于原位置,则完成跳跃过程,如果跳跃后仍然无法找到更优位置,则随机产生一个有效位置替换原组内最差青蛙的位置。
其中,所述步骤7)中,蛙群混合是将所有青蛙从分组中取出,混合到一起;步骤8)中,蛙群排序、分组与步骤4)中操作相同;步骤9)中,更新公告栏的操作与步骤5)中操作相同。
其中,所述步骤10)中,根据迭代终止条件判断是否终止迭代,是将迭代次数累加,然后根据迭代次数和步骤3)中定义的迭代终止条件判断是否终止迭代,如果满足迭代终止条件,则算法结束,步骤9)更新公告栏记录的最优青蛙所处的空间位置即为找到的最优滤波器系数组合;如果不满足迭代终止条件,则重复步骤6)到步骤10)的操作直至条件满足。
(三)有益效果
上述技术方案所提供的基于混合蛙跳的IIR数字滤波器设计方法,基于混合蛙跳算法,其算法设计简单、迭代速度快、全局寻优能力强,便于用户快速获得所需的滤波器系数,具有很高的实用价值。
附图说明
图1是本发明基于混合蛙跳的IIR数字滤波器设计方法的流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
参照图1所示,本实施例基于混合蛙跳的IIR数字滤波器设计方法,包括如下步骤:
1)确定频率采样点数,计算理想幅频响应样本值。
2)针对混合蛙跳算法建立IIR数字滤波器参数评估方法。
3)将混合蛙跳算法映射到IIR数字滤波器设计中,进行参数和蛙群初始化。
4)蛙群排序、分组。
5)更新公告栏。
6)基于步骤2)参数评估方法对每组青蛙进行更新。
7)蛙群混合。
8)蛙群排序、分组。
9)再次更新公告栏。
10)根据迭代终止条件判断是否终止迭代。
步骤1)中的频率采样点数,是需要用户自定义的正整数,表明该方法在计算实际幅频响应与理想幅频响应的差值时,需要采集的频率点数;计算理想幅频响应样本值,是根据用户确定的采样点数,将所理想的滤波器理想幅频响应进行等间隔采样,得到理想幅频响应样本值。
步骤2)中针对混合蛙跳算法建立IIR数字滤波器参数评估方法,是首先根据混合蛙跳算法得到的滤波器系数计算该滤波器的极点,如果有极点不在单位圆内,则将该极点移到单位圆内,然后计算滤波器幅频响应的样本值;之后计算该滤波器的增益;最后计算该滤波器幅频响应与理想滤波器幅频响应的平方误差,平方误差越小,表明该滤波器与理想滤波器的幅频响应越接近,即待评估的滤波器参数组合越好。
步骤3)中将混合蛙跳算法映射到IIR数字滤波器设计中,是将IIR数字滤波器设计中所需要的参数数目,映射为混合蛙跳算法中青蛙所处空间的维数,将IIR数字滤波器参数的取值范围映射为青蛙在每维空间的取值范围,将IIR数字滤波器的参数组合定义为青蛙在所处空间的具体位置,并将该参数组合对应的滤波器与理想滤波器幅频响应的平方误差作为评价该青蛙优劣的指标,平方误差越小表明该青蛙越优;参数初始化,是指定义蛙群中青蛙的总数、青蛙的分组数目、青蛙所处空间的维度和迭代终止条件,其中青蛙总数为分组数目的整数倍,迭代终止条件为最大迭代次数;蛙群初始化,是指为每只青蛙随机生成一个初始位置的过程。
步骤4)中蛙群排序分组,是首先将蛙群中所有青蛙按照所对应滤波器从优到劣的顺序排序,然后从最优青蛙开始,第一只青蛙放入第一分组,第二只青蛙放入第二分组,以此类推,当最后一个分组分配完成后,再将剩余青蛙重新从第一个分组开始放入,直至所有青蛙分组完成。
步骤5)中更新公告栏,是指统计青蛙信息,找到全局最优青蛙和每组最优最差青蛙,记录对应的滤波器系数、增益和与理想滤波器幅频响应的平方误差。
步骤6)中基于步骤2)参数评估方法对每组青蛙进行更新,是指在每组内,最差青蛙首先向组内最优青蛙跳跃,并使用步骤2)的参数评估方法评估跳跃结果,如果跳跃后位置优于原位置,则完成跳跃过程,否则令最差青蛙向全局最优青蛙跳跃,再使用步骤2)的参数评估方法评估跳跃结果,如果跳跃后位置优于原位置,则完成跳跃过程,如果跳跃后仍然无法找到更优位置,则随机产生一个有效位置替换原组内最差青蛙的位置。
步骤7)中蛙群混合,是将所有青蛙从分组中取出,混合到一起。
步骤8)中蛙群排序、分组,是与步骤4)相同的操作。
步骤9)更新公告栏,是与步骤5)相同的操作。
步骤10)根据迭代终止条件判断是否终止迭代,是将迭代次数累加,然后根据迭代次数和步骤3)中定义的迭代终止条件判断是否终止迭代,如果满足迭代终止条件,则算法结束,步骤9)更新公告栏记录的最优青蛙所处的空间位置即为找到的最优滤波器系数组合;如果不满足迭代终止条件,则重复步骤6)到步骤10)的操作直至条件满足。
下面以一个6阶低通滤波器为例介绍本发明设计方法。
首先对本实施例中要设计的滤波器进行介绍,本实施例设计一个6阶低通滤波器,理想幅频响应定义为Hd(ejw),实际幅频响应可表示为:
步骤1)确定频率采样点数为20,根据待设计滤波器的技术指标和采样点数,在0到π范围内对该滤波器的幅频响应进行等间隔采样,得到理想幅频响应样本值Sd。
步骤2)中针对混合蛙跳算法建立IIR数字滤波器参数评估方法,是首先将混合蛙跳算法得到的滤波器系数ci和di代入公式1+ciejω+die-j2ω=0并求解,即计算该滤波器的极点,如果有极点不在单位圆内,则将该极点移到单位圆内,即改变该极点对应的系数ci和di,具体方法是如果di=0,则令ci=1/ci,如果di≠0,则令ci=ci/di,di=1/di;然后利用公式
和步骤1)中的采样点数计算滤波器幅频响应的样本值;之后利用公式:
计算得到增益A;
最后利用公式
计算该滤波器幅频响应与理想滤波器幅频响应的平方误差。
步骤3)中将混合蛙跳算法映射到IIR数字滤波器设计中,由于待设计滤波器为6阶滤波器,因此其二阶节的个数为3,即该滤波器设计需要确定4*3=12个系数,因此确定混合蛙跳算法中青蛙所处空间维数为12;根据二阶节级联形式滤波器极点计算方法,确定其系数的取值范围为ci∈(-2,2),di∈(-1,1)。为便于计算,将所有参数均按照(-2,2)进行限制,即青蛙在每维空间的取值范围为(-2,2);将滤波器的系数(a1,b1,c1,d1,a2,b2,c2,d2,a3,b3,c3,d3)组合定义为青蛙在所处空间的具体位置,并将该参数组合对应的滤波器与理想滤波器幅频响应的平方误差E作为评价该青蛙优劣的指标;参数初始化,定义蛙群中青蛙总数为9,分组数目为3,迭代终止条件为1000次迭代;蛙群初始化,根据限制条件(-2,2)为每只青蛙随机生成一个初始位置。
步骤4)中蛙群排序分组,将蛙群中9只青蛙按照所对应滤波器从优到劣的顺序排序,然后从最优青蛙开始分组,第一只青蛙放入第一分组,第二只青蛙放入第二分组,以此类推,当最后一个分组分配完成后,再将剩余青蛙重新从第一个分组开始放入,直至所有青蛙分组完成。最终结果是第1、4和7只青蛙放入第一组,第2、5和8只青蛙放入第二组,第3、6和9只青蛙放入第三组。
步骤5)中更新公告栏,是指统计青蛙信息,找到全局最优青蛙和每组最优最差青蛙,记录对应的滤波器系数、增益A和与理想滤波器幅频响应的平方误差E。
步骤6)中基于步骤2)参数评估方法对每组青蛙进行更新,是指在每组内,最差青蛙首先向组内最优青蛙跳跃,并使用步骤2)的参数评估方法评估跳跃结果,如果跳跃后位置优于原位置,则完成跳跃过程,否则令最差青蛙向全局最优青蛙跳跃,再使用步骤2)的参数评估方法评估跳跃结果,如果跳跃后位置优于原位置,则完成跳跃过程,如果跳跃后仍然无法找到更优位置,则随机产生一个有效位置替换原组内最差青蛙的位置。
步骤7)蛙群混合,将所有青蛙从分组中取出,混合到一起。
步骤8)蛙群排序、分组,与步骤4)相同。
步骤9)更新公告栏,与步骤5)相同。
步骤10)根据迭代终止条件判断是否终止迭代,首先将迭代次数加1,然后判断是否满足步骤3)中的迭代终止条件,如果满足,则算法结束,步骤9)记录的全局最优青蛙所处的空间位置(a1,b1,c1,d1,a2,b2,c2,d2,a3,b3,c3,d3)即为找到的最优滤波器系数组合,增益A即为滤波器增益;如果不满足迭代终止条件,则重复步骤6)到步骤10)的操作直至条件满足。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。