基于ccs的LMS自适应滤波器设计

一、自适应滤波原理
所谓自适应滤波器,就是利用前一时刻已获得的滤波器参数,自动地调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。根据环境的改变,使用自适应算法来改变滤波器的参数。
在这里插入图片描述
二、自适应LMS算法
根据小均方误差准则以及均方误差曲面,自然的我们会想到沿每一时刻均方误差的陡下降在权向量面上的投影方向更新,也就是通过目标函数ξ(k)的反梯度向量来反复迭代更新。由于均方误差性能曲面只有一个极小值,只要收敛步长选择恰当,不管初始权向量在哪,后都可以收敛到误差曲面的小点,或者是在它的一个邻域内。这种沿目标函数梯度反方向来解决小化问题的方法,我们一般称为速下降法,表达式如下:
在这里插入图片描述
基于随机梯度算法的小均方自适应滤波算法的完整表达式如下:
在这里插入图片描述
LMS自适应算法是一种特殊的梯度估计,不必重复使用数据,也不必对相关矩阵和互相关矩阵进行运算,只需要在每次迭代时利用输入向量和期望响应,结构简单,易于实现。虽然LMS收敛速度较慢,但在解决许多实际中的信号处理问题,LMS算法是仍然是好的选择。
在这里插入图片描述
三、LMS算法程序流程

  1. 初始化各种参量包括自适应滤波器(向量)W (n), 参考信号(向量) X(n)
  2. 获取参考信号x(n)和期望信号d(n)
  3. 更新参考信号(向量) X(n)
  4. 计算滤波信号 y(n) =W (n)X(n)
  5. 计算误差信号 e(n)=d(n)-y(n)
  6. 更新自适应滤波器 W(n+1)=W(n)+e(n)X(n)
  7. 回到第2步进行迭代
    在这里插入图片描述
    四、滤波器C语言代码
#include "math.h"
#include "stdio.h"
int     N=16;                            //滤波器阶数
float   u=0.005;                       //LMS的收敛步长
float   pi=3.1415926;
int     i,j;
float   x[1039];
float   y[1024];
float   d[1024];
float   e[1024];
float   X[16];
float   W[16];
void main()
{
    for (i=0;i<1024;i++)                //参考信号
    {
        x[i]=sin((9*i-36)*pi/180);
    }


    for (i=0;i<1024;i++)                //期望信号
    {
        d[i]=x[i+N-1];
    }

    for (i=0;i<N;i++)                  //初始化滤波器参数
    {
        W[i]=0;
    }

    for (i=0;i<1024;i++)
    {
        y[i]=0;
        for(j=0;j<N;j++)
        {
            X[j]=x[i+N-j-1];
        }
        for (j=0;j<N;j++)
        {
            y[i]=y[i]+W[j]*X[j];       //计算滤波信号
        }
        e[i]=d[i]-y[i];
        for(j=0;j<N;j++)
        {
            W[j]=W[j]+2*u*e[i]*X[j];   //更新自适应滤波器
        }
    }
}

五、输出波形研究
参考信号是一个正弦波叠加信号,期望信号是参考信号的移相信号,移动了15个采样点,可以看出经过一段时间,自适应滤波器的输出便能够“跟踪”输入信号的频率和幅度,与滤波器的期望输出信号一致。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
随着微电子技术和计算机技术的迅速发展,具备了实现自适应滤波器技术的各种软硬件条件,有关自适应滤波器的新算法、新理论和新的实施方法不断涌现,对自适应滤波的稳定性、收敛速度和跟踪特性的研究也不断深入,这一切使该技术越来越成熟,并且在系统辨识、通信均衡、回波抵消、谱线增强、噪声抑制、系统模拟语音信号处理、生物医学电子等方面都获得了广泛应用口。自适应滤波器实现的复杂性通常用它所需的乘法次数和阶数来衡量,而DSP强大的数据吞吐量和数据处理能力使得自适应滤波器的实现更容易。目前绝大多数的自适应滤波器应用是基于最新发展的DSP来设计的。滤波技术是信号处理中的一种基本方法和技术,尤其数字滤波技术使用广泛,数字滤波理论的研究及其产品的开发一直受到很多国家的重视。从总的来说滤波可分为经典滤波和现代滤波。经典滤波要求已知信号和噪声的统计特性,如维纳滤波和卡尔曼滤波。现代滤波则不要求己知信号和噪声的统计特性,如自适应滤波。自适应滤波的原理就是利用前一时刻己获得的滤波参数等结果,自动地调节现时刻的滤波参数,从而达到最优化滤波。自适应滤波具有很强的自学习、自跟踪能力,适用于平稳和非平稳随机信号的检测和估计。自适应滤波一般包括3个模块:滤波结构、性能判据和自适应算法。其中,自适应滤波算法一直是人们的研究热点,包括线性自适应算法和非线性自适应算法,非线性自适应算法具有更强的信号处理能力,但计算比较复杂,实际应用最多的仍然是线性自适应滤波算法。线性自适应滤波算法的种类很多,有LMS自适应滤波算法、R路自适应滤波算法、变换域自适应滤波算法、仿射投影算法、共扼梯度算法等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值