LMS自适应算法分析及在数字滤波器设计中的应用
发布网友
发布时间:2022-04-29 01:05
我来回答
共4个回答
热心网友
时间:2022-06-27 02:59
自适应过程一般采用典型LMS自适应算法,但当滤波器的输入信号为有色随机过程时,特别是当输入信号为高度相关时,这种算法收敛速度要下降许多,这主要是因为输入信号的自相关矩阵特征值的分散程度加剧将导致算法收敛性能的恶化和稳态误差的增大。此时若采用变换域算法可以增加算法收敛速度。变换域算法的基本思想是:先对输入信号进行一次正交变换以去除或衰减其相关性,然后将变换后的信号加到自适应滤波器以实现滤波处理,从而改善相关矩阵的条件数。因为离散傅立叶变换�DFT 本身具有近似正交性,加之有FFT快速算法,故频域分块LMS�FBLMS 算法被广泛应用。
FBLMS算法本质上是以频域来实现时域分块LMS算法的,即将时域数据分组构成N个点的数据块,且在每块上滤波权系数保持不变。其原理框图如图2所示。FBLMS算法在频域内可以用数字信号处理中的重叠保留法来实现,其计算量比时域法大为减少,也可以用重叠相加法来计算,但这种算法比重叠保留法需要较大的计算量。块数据的任何重叠比例都是可行的,但以50%的重叠计算效率为最高。对FBLMS算法和典型LMS算法的运算量做了比较,并从理论上讨论了两个算法中乘法部分的运算量。本文从实际工程出发,详细分析了两个算法中乘法和加法的总运算量,其结果为:
复杂度之比=FBLMS实数乘加次数/LMS实数乘加次数=(25Nlog2N+2N-4)/[2N(2N-1)]�
采用ADSP的C语言来实现FBLMS算法的程序如下:
for(i=0;i<=30;i++)
{for(j=0;j<=n-1;j++)
{in[j]=input[i×N+j;]
rfft(in,tin,nf,wfft,wst,n);
rfft(w,tw,wf,wfft,wst,n);
cvecvmlt(inf,wf,inw,n);
ifft(inw,t,O,wfft,wst,n);
for(j=0,j<=N-1;j++)
{y[i×N+j]=O[N+j].re;
e[i×N+j]=refere[i×N+j]-y[i×N+j];
temp[N+j]=e[i×N+j;}
rfft(temp,t,E,wfft,wst,n);
for(j=0;j<=n-1;j++)
{inf_conj[j]=conjf(inf[j]);} ��
cvecvmlt(E,inf_conj,Ein,n);
ifft(Ein,t,Ein,wfft,wst,n);
for(j=0;j<=N-1;j++)
{OO[j]=Ein[j].re;
w[j]=w[j]+2*u*OO[j];}��
}
在EZ-KIT测试板中,笔者用汇编语言和C语言程序分别测试了典型LMS算法的运行速度,并与FBLMS算法的C语言运行速度进行了比较,表2所列是其比较结果,从表2可以看出滤波器阶数为64时,即使是用C语言编写的FBLMS算法也比用汇编编写的LMS算法速度快20%以上,如果滤波器的阶数更大,则速度会提高更多。
热心网友
时间:2022-06-27 02:59
一、应用:
1)消除心电图中的电源干扰;
2)检测胎儿心音时滤除母亲的心音及背景干扰;
3)在有多人讲话的场合下提取某人的讲话;
4)作为天线阵列的自适应旁瓣对消器。
二、简介:
自适应滤波器属于现代滤波器)它是20世纪40年代发展起来的)在自适应信号处理领域中发挥着重要的作用。
自适应滤波器是相对固定滤波器而言的(自适应滤波器滤波的频率是自动适应输入信号而变化的)在没有任何关于信号和噪声的先验知识的条件下。
自适应滤波器利用前一时刻已获得的滤波器的参数来自动调节现时刻的滤波器的参数-以适应信号和噪声未知或随机变化的统计特性,从而实现最优滤波器。即是根据不同的信号环境实现自身参数的调整。而实际情况中,信号和噪声的统计特性常常未知或无法获知,因此自适应滤波器的应用空间非常广泛-如系统辨识u噪声对消u自适应均衡w线性预测w自适应天线阵列等很多领域。
热心网友
时间:2022-06-27 03:00
呵呵 这个相对来说还是比较简单.好好找资料.好好找吧
热心网友
时间:2022-06-27 03:00
去买份来