当前位置: 首页 > news >正文

4)自适应滤波(一)

目录

一.LMS算法

1.滤波器——改变信号频谱

模拟滤波器:

数字滤波器:

2.自适应滤波器简介

自适应滤波器:

非自适应滤波器:

自适应滤波器应用:

自适应滤波场景:

自适应滤波处理逻辑(处理非平稳信号):

3.N阶线性系统:

4.维纳滤波器(Wiener)

基本推导:

优缺点:

5.基本LMS算法

动机:

标准LMS算法的执行流程:

LMS算法的基本思想——梯度下降

LMS算法的优缺点:

LMS算法的改进思路:

6.Block LMS

Block LMS梯度计算公式推导:

Block LMS滤波器系数更新公式推导:

7.Block LMS的两个核心运算:

两个序列的线性卷积和线性相关

8.Block LMS——线性卷积和线性相关变换到频域进行优化计算:

8.1 计算线性卷积:

8.2 计算线性相关

8.3 滤波器系数更新

8.4 FDAF框架:

9.关于LMS算法的问题讨论?

Q1: LMS算法对输入信号有什么要求?

Q2: 什么是归一化LMS、功率归一化LMS?

Q3: 学习速率如何选取?

作业:


Table of Contents

    - 一.LMS算法

        - 1.滤波器——改变信号频谱

            - 模拟滤波器:

            - 数字滤波器:

        - 2.自适应滤波器简介

            - 自适应滤波器:

            - 非自适应滤波器:

            - 自适应滤波器应用:

            - 自适应滤波场景:

            - 自适应滤波处理逻辑(处理非平稳信号):

        - 3.N阶线性系统:

        - 4.维纳滤波器(Wiener)

            - 基本推导:

            - 优缺点:

        - 5.基本LMS算法

            - 动机:

            - 标准LMS算法的执行流程:

            - LMS算法的基本思想——梯度下降

            - LMS算法的优缺点:

            - LMS算法的改进思路:

        - 6.Block LMS

            - Block LMS梯度计算公式推导:

            - Block LMS滤波器系数更新公式推导:

        - 7.Block LMS的两个核心运算:

            - 两个序列的线性卷积和线性相关

        - 8.Block LMS——线性卷积和线性相关变换到频域进行优化计算:

            - 8.1 计算线性卷积:

                - 计算时域的线性卷积通常简化到频域上计算两个序列的相乘。

                - 为什么采用圆周运算?

                - Overlap-save method(频域)

                - 为什么圆周卷积后 N1-N2+1 点与线性卷积结果相同?

                - 如何构造长度2N的序列?

                - Overlap-save method流程:

            - 8.2 计算线性相关

            - 8.3 滤波器系数更新

            - 8.4 FDAF框架:

        - 9.关于LMS算法的问题讨论?

            - Q1: LMS算法对输入信号有什么要求?

            - Q2: 什么是归一化LMS、功率归一化LMS?

            - Q3: 学习速率如何选取?

    - 作业:

一.LMS算法

1.滤波器——改变信号频谱

模拟滤波器:

由R、L、C(电阻、电感、电容)构成的模拟电路,A/D前的抗混叠滤波器

数字滤波器:

由数字加法器、乘法器、延时器构成,基于数字信号运算实现

2.自适应滤波器简介

自适应滤波器:

一种能够根据输入信号自动调整参数的数字滤波器

非自适应滤波器:

具有静态滤波器系数的数字滤波器,这些静态系数构成了滤波器的传递函数。

自适应滤波器应用:

应用在如系统辨识、预测、噪声消除等

自适应滤波场景:

无法事先知道需要进行操作的参数,必须使用自适应的系数进行处理,通常使用自适应滤波器。

自适应滤波处理逻辑(处理非平稳信号):

自适应滤波器处理语音信号时,不需要事先知道输入信号和噪声的统计特性,滤波器自身能够在工作过程中学习或估计信号的统计特性,并以此为依据调整自身参数,达到某种准则或代价函数下的最优滤波效果。

一旦输入信号统计特性发生变化,还可以跟踪变化,重新调整参数,使得滤波器性能达到最优。 

3.N阶线性系统:

如下图:

w(n)表示N阶线性系统N个参数组成的向量。当有输入x后,则输出是输入和参数的线性卷积的结果。

3.1,X 与 W 的运算,满足转置的交换律.

3.4,e表示  n时刻的后验误差,因为计算过程中把n时刻的参数w当作了已知。

问题:

N阶线性系统的公式为什么是3.1 公式那样表示?

4.维纳滤波器(Wiener)

【均方误差准则下的最优解】

推导如下,延续上一节N阶线性系统计算出的误差。

基本推导:

有了误差的定义后,接下来是找一个最优化准则和基于准则下的目标函数。常用最小均方误差(MMSE)。如下图:

3.6,为了最小化误差函数J(w),需要计算J(w)对w的导数,令导数为0。R是输入x(n)的自相关矩阵,r是相关向量。

3.7,是基于MMSE准则下的最优解。

问题:

3.6,是计算J(w)对w的导数令导数为零的结果,具体是怎么计算的?

优缺点:

优点:

维纳滤波器的优点是适应面较广,无论平稳随机过程是连续的还是离散的,是标量的还是向量的,都可应用。对某些问题,还可求出滤波器传递函数的显式解,并进而采用由简单的物理元件组成的网络构成维纳滤波器。

缺点:

维纳滤波器的缺点是,要求得到半无限时间区间内的全部观察数据的条件很难满足,同时它也不能用于噪声为非平稳的随机过程的情况,对于向量情况应用也不方便。因此,维纳滤波在实际问题中应用不多。 实现维纳滤波的要求是:①输入过程是广义平稳的;②输入过程的统计特性是已知的。根据其他最佳准则的滤波器亦有同样要求。然而,由于输入过程取决于外界的信号、干扰环境,这种环境的统计特性常常是未知的、变化的,因而难以满足上述两个要求。这就促使人们研究自适应滤波器。

5.基本LMS算法

(根据输入,动态更新滤波器系数)

动机:

由于涉及数学期望,实际应用中,绝大多数情况下我们无法获得信号真实的自相关矩阵,以及输入信号与期望输出之间的互相关向量。因此,实际用3.5 式中的瞬时梯度代替数学期望,采用不断逼近最优解,如下图公式3.8:

3.8,是由公式3.5去掉期望,对w求导后结果。

 通过负梯度方向更新滤波器系数,

3.9,谬是更新步长

标准LMS算法的执行流程:

LMS算法的基本思想——梯度下降

负梯度方向更新

瞬时梯度是真实梯度的无偏估计。

LMS算法的优缺点:

优点:

算法简单,易实现

缺点:

收敛速度慢,每个采样点更新

LMS算法的改进思路:

Block LMS,样本更多估计方差也会相应减小。

梯度噪声

6.Block LMS

(单样本到多样本一次计算梯度更新滤波器系数)

基于公式推导多样本时,梯度计算公式和滤波器更新公式

Block LMS梯度计算公式推导:

Block LMS滤波器系数更新公式推导:

更新公式,单个样本w(n+L)和mini-batch(block)数据后 滤波器系数 w 的更新推导:

3.11, 中e(n+m)表示第 n+m  个样本的误差。

3.13和3.8对比,3.8表示单个样本的根据labal计算的梯度,3.13表示推导出的mini-batch(block)的梯度。

3.12和3.9对比,3.9表示单个样本时,w的更新公式,3.12表示mini-batch(block)数据后的w更新公式。

7.Block LMS的两个核心运算:

两个序列的线性卷积和线性相关

把求解Block LMS的核心问题,拆解成了求取两个序列的线性卷积和线性相关两个问题。

y(n+m)是一个序列。

梯度向量是定义了一个线性相关运算,输入信号x 与误差信号e之间求线性相关。

线性卷积

线性卷积(linear convolution) 在时域描述线性系统输入和输出之间关系的一种运算。这种运算在线性系统分析和信号处理中应用很多,通常简称卷积。

8.Block LMS——线性卷积和线性相关变换到频域进行优化计算:

8.1 计算线性卷积:

计算时域的线性卷积通常简化到频域上计算两个序列的相乘。

首先时域卷积等于频域相乘。

为什么采用圆周运算?

将线性卷积和线性相关对应到圆周卷积,圆周相关,因为时域信号是离散在频域上带有周期性。  且圆周卷积和圆周相关是和傅立叶变换后的乘积一一对应的。

基于频域计算两个序列的线性卷积

这里y(n+m)是一个序列,m属于【0,N-1】

 

Overlap-save method(频域)

圆周卷积后 N1-N2+1 点与线性卷积结果相同

为什么圆周卷积后 N1-N2+1 点与线性卷积结果相同?

答:见博文1)数字信号及其基本运算。 因为N1大于N2, 当N2滑动从左往右进入,没有完全跟N1重合,对于未重合部分,圆周卷积的值由于进行了周期延拓,所以大于线性卷积。当N2开始跟N1重合,从开始到结束的  N1 - N2 + 1个点全部为有效值,结果一致。

所以输入信号N1通常取2N

所以基于block序列,圆周卷积和线性卷积计算结果得出的结论与单个样本计算结果结论一致。即当N个点线性卷积后输出与圆周卷积的后N个点输出相等。

如何构造长度2N的序列

Overlap-save method流程:

8.2 计算线性相关

(线性相关计算作用是去更新滤波器系数)

如下图,线性相关是计算梯度向量。

计算输入信号的共轭谱(虚部取反)与误差信号做乘积。

3.19,表示梯度向量在频域的表达形式,是一个长度为2N序列的梯度向量,等号右边第一个X表示 输入信号的功率谱。

8.3 滤波器系数更新

8.4 FDAF框架:

基于频域计算线性卷积和线性相关。

频域自适应滤波是出发点是基于Block LMS,在频域上计算更高效。

从LMS出发,从单样本到Block引出了Block LMS,为了计算高效介绍了频域自适应滤波。

9.关于LMS算法的问题讨论?

Q1: LMS算法对输入信号有什么要求?

答:

解相关LMS上指,对输入信号应用LMS算法之前,先降低输入信号的相关性。

Q2: 什么是归一化LMS、功率归一化LMS?

答:

Q3: 学习速率如何选取?

答:

作业:

问题1:

为什么计算线性卷积时,是将滤波器系数向量后面补N个0,而计算线性相关时,是在误差向量前面补N个0?

答:输入信号计算有效部分是后N个点,线性卷积过程需要进行翻折,所以是后面补N个0,同理线性相关只有移位、相乘、相加没有翻折,所以前面补0。

问题2:

为什么时域上卷积结果会等于频域上相乘后?

答:见采样定理章节

ref:

线性相关与线性卷积:https://blog.csdn.net/dujuancao11/article/details/105968580

https://zh.m.wikipedia.org/zh/%E7%BB%B4%E7%BA%B3%E6%BB%A4%E6%B3%A2

相关文章:

  • Web前端期末大作业-重庆旅游景区网页设计(HTML+CSS+JS)
  • MySQL:复合查询和内外连接
  • 高亮蓝紫光油溶性ZnSe/ZnS量子点,PL波长390nm-440nm
  • SpringMVC概述及入门案例
  • 这篇文章告诉你三个好用的配音软件
  • 看漫画学Python 原来真的有用
  • Spring Cloud Gateway获取认证用户信息
  • 软件项目的自动化测试
  • 华为云的云计算比阿里云的云计算认证好吗?
  • Linux教程:RocketMq介绍以及集群服务搭建(双主双从同步双写)
  • RK3399平台开发系列讲解(设备树篇)设备树资源的处理
  • 项目实战第二十二讲:使用职责链模式实现商品审核
  • 笔试强训(十三)
  • node.js基于微信小程序的外卖订餐系统 uniapp 小程序
  • u盘文件删除怎么恢复?解决方法很简单
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • co模块的前端实现
  • Electron入门介绍
  • iOS编译提示和导航提示
  • Javascript设计模式学习之Observer(观察者)模式
  • JS题目及答案整理
  • JS专题之继承
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Mysql5.6主从复制
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • nodejs:开发并发布一个nodejs包
  • Otto开发初探——微服务依赖管理新利器
  • spark本地环境的搭建到运行第一个spark程序
  • spring security oauth2 password授权模式
  • spring-boot List转Page
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 看域名解析域名安全对SEO的影响
  • 强力优化Rancher k8s中国区的使用体验
  • 如何学习JavaEE,项目又该如何做?
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用 Docker 部署 Spring Boot项目
  • 跳前端坑前,先看看这个!!
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 阿里云ACE认证之理解CDN技术
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #### go map 底层结构 ####
  • #define与typedef区别
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (1)bark-ml
  • (13):Silverlight 2 数据与通信之WebRequest
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (NSDate) 时间 (time )比较
  • (python)数据结构---字典
  • (zz)子曾经曰过:先有司,赦小过,举贤才