滤波算法的研究
㈠ 自适应滤波的几种典型的自适应滤波算法
对自适应滤波算法 的研究是当今自适应信号处理中最为活跃的研究课题之一。自适应滤波算法广泛应用于系统辨识、回波消除、自适应谱线增强、自适应信道均衡、语音线性预测、自适应天线阵等诸多领域中。总之,寻求收敛速度快,计算复杂性低,数值稳定性好的自适应滤波算法是研究人员不断努力追求的目标。虽然线性自适应滤波器和相应的算法具有结构简单、计算复杂性低的优点而广泛应用于实际,但由于对信号的处理能力有限而在应用中受到限制。由于非线性自适应滤波器,如Voletrra滤波器和基于神经网络的自适应滤波器,具有更强的信号处理能力,已成为自适应信号处理中的一个研究热点。其中较典型的几种算法包括: LMS自适应滤波算法 RLS自适应滤波算法 变换域自适应滤波算法 仿射投影算法 共扼梯度算法 基于子带分解的自适应滤波算法 基于QR分解的自适应滤波算法 算法性能评价
变步长的自适应滤波算法 虽然解决了收敛速度、时变系统跟踪速度与收敛精度方面对算法调整步长因子u的矛盾,但变步长中的其它参数的选取还需实验来确定,应用起来不太方便。对RLS算法的各种改进,其目的均是保留RLS算法收敛速度快的特点而降低其计算复杂性。变换域类算法亦是想通过作某些正交变换使输入信号自相关矩阵的特征值发散程度变小,提高收敛速度。而仿射投影算法的性能介于LMS算法和RLS算法之间。共扼梯度自适应滤波算法的提出是为了降低RLS类算法的复杂性和克服某些快速RLS算法存在的数值稳定性问题。信号的子带分解能降低输入信号的自相关矩阵的特征值发散程度,从而加快自适应滤波算法的收敛速度,同时便于并行处理,带来了一定的灵活性。矩阵的QR分解具有良好的数值稳定性。
㈡ 最近写关于粒子滤波方面的论文,想知道他的几种算法与原算法之间进行了哪些修改。
粒子滤波(PF: Particle Filter)的思想基于蒙特卡洛方法(Monte Carlo methods),它是利用粒子集来表示概率,可以用在任何形式的状态空间模型上。其核心思想是通过从后验概率中抽取的随机状态粒子来表达其分布,是一种顺序重要性采样法(Sequential Importance Sampling)。简单来说,粒子滤波法是指通过寻找一组在状态空间传播的随机样本对概率密度函数 进行近似,以样本均值代替积分运算,从而获得状态最小方差分布的过程。这里的样本即指粒子,当样本数量N→∝时可以逼近任何形式的概率密度分布。
尽管算法中的概率分布只是真实分布的一种近似,但由于非参数化的特点,它摆脱了解决非线性滤波问题时随机量必须满足高斯分布的制约,能表达比高斯模型更广泛的分布,也对变量参数的非线性特性有更强的建模能力。因此,粒子滤波能够比较精确地表达基于观测量和控制量的后验概率分布,可以用于解决SLAM问题。
粒子滤波的应用
粒子滤波技术在非线性、非高斯系统表现出来的优越性,决定了它的应用范围非常广泛。另外,粒子滤波器的多模态处理能力,也是它应用广泛有原因之一。国际上,粒子滤波已被应用于各个领域。在经济学领域,它被应用在经济数据预测;在军事领域已经被应用于雷达跟踪空中飞行物,空对空、空对地的被动式跟踪;在交通管制领域它被应用在对车或人视频监控;它还用于机器人的全局定位。
粒子滤波的缺点
虽然粒子滤波算法可以作为解决SLAM问题的有效手段,但是该算法仍然存在着一些问题。其中最主要的问题是需要用大量的样本数量才能很好地近似系统的后验概率密度。机器人面临的环境越复杂,描述后验概率分布所需要的样本数量就越多,算法的复杂度就越高。因此,能够有效地减少样本数量的自适应采样策略是该算法的重点。另外,重采样阶段会造成样本有效性和多样性的损失,导致样本贫化现象。如何保持粒子的有效性和多样性,克服样本贫化,也是该算法研究重点。
粒子滤波的发展
1.MCMC改进策略
马尔可夫链蒙特卡洛(MCMC)方法通过构造Markov链,产生来自目标分布的样本,并且具有很好的收敛性。在SIS的每次迭代中,结合MCMC使粒子能够移动到不同地方,从而可以避免退化现象,而且Markov链能将粒子推向更接近状态概率密度函数(probability density function,(PDF))的地方,使样本分布更合理。基于MCMC改进策略的方法有许多,常用的有Gibbs采样器和MetropolisHasting方法。
2.Unscented粒子滤波器(UPF)
Unscented Kalman滤波器(UKF)是Julier等人提出的。EKF(Extended Kalman Filter)使用一阶Taylor展开式逼近非线性项,用高斯分布近似状态分布。UKF类似于EKF,用高斯分布逼近状态分布,但不需要线性化只使用少数几个称为Sigma点的样本。这些点通过非线性模型后,所得均值和方差能够精确到非线性项Taylor展开式的二阶项,从而对非线性滤波精度更高。Merwe等人提出使用UKF产生PF的重要性分布,称为Unscented粒子滤波器(UPF),由UKF产生的重要性分布与真实状态PDF的支集重叠部分更大,估计精度更高。
3.Rao-Blackwellised粒子滤波器(RBPF)
在高维状态空间中采样时,PF的效率很低。对某些状态空间模型,状态向量的一部分在其余部分的条件下的后验分布可以用解析方法求得,例如某些状态是条件线性高斯模型,可用Kalman滤波器得到条件后验分布,对另外部分状态用PF,从而得到一种混合滤波器,降低了PF采样空间的维数,RBPF样本的重要性权的方差远远低于SIR方法的权的方差,为使用粒子滤波器解决 SLAM问题提供了理论基础。而Montemerlo等人在2002年首次将Rao-Blackwellised粒子滤波器应用到机器人SLAM中,并取名为FastSLAM算法。该算法将SLAM问题分解成机器人定位问题和基于位姿估计的环境特征位置估计问题,用粒子滤波算法做整个路径的位姿估计,用EKF估计环境特征的位置,每一个EKF对应一个环境特征。该方法融合EKF和概率方法的优点,既降低了计算的复杂度,又具有较好的鲁棒性。
最近几年,粒子方法又出现了一些新的发展,一些领域用传统的分析方法解决不了的问题,现在可以借助基于粒子仿真的方法来解决。在动态系统的模型选择、故障检测、诊断方面,出现了基于粒子的假设检验、粒子多模型、粒子似然度比检测等方法。在参数估计方面,通常把静止的参数作为扩展的状态向量的一部分,但是由于参数是静态的,粒子会很快退化成一个样本,为避免退化,常用的方法有给静态参数人为增加动态噪声以及Kernel平滑方法,而Doucet等提出的点估计方法避免对参数直接采样,在粒子框架下使用最大似然估计(ML)以及期望值最大(EM)算法直接估计未知参数。
㈢ 减少噪声的匹配滤波算法
(1)传统匹配滤波算法
Rickett et al.(2001)给出了匹配滤波简要的公式及算子长度设计标准,本节给出了更为详细的匹配 滤波公式,并给出推导公式基本条件和结果。
设同一地区不同时期Y1,Y2得到的地震数据分别为GY1(t),GY2(t),取Y1年份的地震记录为参
考地震道,使Y2年份相应的地震记录与之匹配。选取归一化算子p使得目标泛函:
海上时移地震油藏监测技术
极小。最终得到关于求解匹配滤波器{P(m),m=1,2,…,L}的L个方程的方程组:
海上时移地震油藏监测技术
为意义更明确,对上面的公式进一步简化,令
海上时移地震油藏监测技术
上两式中:RY2Y2(m-n)为时间延迟为m-n的时期Y2地震记录在设计窗口中的自相关;RY1Y2(n)为时间延迟为n的时期Y1与时期Y2地震记录在设计窗口中的互相关,于是方程(4.8)可以进一步写成:
海上时移地震油藏监测技术
求解方程组(4.11)得到匹配滤波器算子{P(m),m=1,2,…,L},用
海上时移地震油藏监测技术
校正相应的地震剖面。通过实际数据处理结果验证了上述推导的正确性和方法的有效性。
方程(4.11)写成矩阵形式:
海上时移地震油藏监测技术
式中:M为时期Y2地震记录在设计窗口中的自相关序列组成的Toeplitz矩阵,R为时期Y1与时期Y2地 震记录在设计窗口中的互相关序列向量。求解方程(4.13)可采用Levinson递推算法,计算效率高。
为了减少噪音的影响,通常引入阻尼项,方程(4.13)变为
海上时移地震油藏监测技术
式中:μ为很小的数,通常为可设为0.01或0.001。
实际应用中,可以发现式(4.13)受噪声的影响很大,不稳定。虽然加入阻尼项后结果有所改善,但 如何选取合适阻尼因子又是一个难题。为此推导新的匹配滤波表达形式,寻求更稳健的求解方法。
(2)新匹配滤波公式
同样设同一地区不同时期Y1,Y2得到的地震数据分别为GY1(t),GY2(t),取Y1年份的地震记录 为参考地震道,使Y2年份相应的地震记录与之匹配。则匹配过程可描述为
海上时移地震油藏监测技术
其中M为GY2组成的褶积矩阵。如果设地震道的采样点数为n,设计滤波器f长度为m,M则为(2×n-1)×m矩阵,为保持矩阵维数相同,一种方法是将GY1后面补零为(2×n-1)×1向量,另一种方法是取 矩阵M的前n×m项。如果采用第一种方法,可以验证得到的公式与(4.13)式相同。在此采用后一种方 法,得到新的匹配滤波方程。只要设计滤波器f足够长,总能满足能量差e(f)最小,根据范数定义:
海上时移地震油藏监测技术
求解能量差e(f)最小问题可转化为
海上时移地震油藏监测技术
即对滤波因子向量求导,最终可归结为求解线性方程:
海上时移地震油藏监测技术
如果记A=MTM,b=MTGY1,方程(4.18)转化为
海上时移地震油藏监测技术
(4.19)式形式上与(4.13)式类似,内容不同,不再是Toeplitz矩阵,因此不能应用Levinson递推算法求解。因此,引入奇异值分解方法求解方程(4.19)。
(3)基于奇异值分解的匹配滤波算法
矩阵的奇异值分解,是矩阵计算中一套很有用的技术。它可以有效地处理系数矩阵是奇异的或者接 近奇异的方程组。对于矩阵A,如果A∈Rm×n,并且A的秩为r,总有
海上时移地震油藏监测技术
其中, V为正交阵。 ,并且 为A 的奇异值。
公式(4.20)即为矩阵A的奇异值分解,根据正交矩阵的性质:
海上时移地震油藏监测技术
很容易表示出矩阵A的逆矩阵
海上时移地震油藏监测技术
将式(4.22)带入式(4.19)中,得到滤波因子的表达式为
海上时移地震油藏监测技术
实际计算中,当A是奇异阵出现奇异值,或A接近奇异或病态矩阵时,(4.23)式的计算过程就无法进行。这时可将出现的奇异项 (σk是零,或者数值很小)简单地替换成零或很小的常数,通过这种方法能得 到方程稳定的解。
对于实际含有噪声的信号,信号能量主要分布在奇异值大的分量上,因此去除小奇异值同时能消除 噪声影响。通常可选取某一能量百分比的奇异值作为去除的阈值,以这种方式既能克服A接近奇异或病 态矩阵的影响,又能减小噪声的影响,使滤波因子稳健。
(4)模拟数据验证
模拟得到一组存在时间、振幅、频率、相位差异的信号,作为基测线与监测测线地震道,对监测测 线地震道加入不同比例的随机噪声,组成验正算法有效性的数据体,如图4.10所示。分别用传统的匹配 滤波方法和重新推导的基于奇异值分解的匹配滤波方法进行匹配处理,比较匹配后基测线与监测测线振 幅差异,结果见图4.11和图4.12。可以看出,传统匹配滤波公式的计算结果受噪声的影响很大,而基于 奇异值分解的匹配滤波方法具有很好的抗噪声能力。
图4.10 模拟地震记录(从上至下依次为加入0%,10%,20%,30%噪声的信号)
图4.11 传统方法匹配结果
图4.12 基于奇异值分解方法匹配结果
(5)实际数据验证
选择一块同一地区两次不同时间测得的两条二维测线;选取油藏上方时间长度为300ms的窗口作为 滤波因子设计窗口,并以抽取其中139道构成验证互均衡算法的数据体(图4.13,图4.14)。分别采用 传统匹配滤波公式与基于奇异值分解的匹配滤波两种方法进行校正。比较差异剖面的平均能量,结果见 图4.15。从图中可知基于奇异值分解的匹配滤波方法具有更好的抗噪声能力,匹配误差远小于传统匹配 滤波。
图4.13 某地区时间1地震记录
图4.14 某地区时间2地震记录
图4.15 两种匹配方法结果误差能量对比图
本节推导了新的匹配滤波方程,提出基于奇异值分解的匹配滤波算法,理论和实际数据都验证了该 方法有效性。这里从计算精度上比较两种匹配滤波算法,实际处理时移地震数据时还要考虑计算时间,此时寻求快速的奇异值分解算法是一种提高处理效率的方式,另外针对不同信噪比,将传统匹配滤波算 法与基于奇异值分解的匹配滤波算法结合应用同样是一种很好的方式。总之,基于奇异值分解的匹配滤 波提高了匹配精度,有利于为时移地震解释提供一致性更好的地震资料。
㈣ 如何利用粒子滤波来得到自己想要的波形
粒子滤波(PF: Particle Filter)算法起源于20世纪50年代Poor Man's Monte Carlo问题的研究,但第一个具有应用性的粒子滤波算法于1993年由Gordon等提出(“A novel Approach to nonlinear/non-Gaussian Bayesian State estimation”)。它是利用粒子集来表示概率,可以用在任何形式的状态空间模型上。其核心思想是通过从后验概率中抽取的随机状态粒子来表示其分布情况,是一种顺序重要性采样法(Sequential Importance Sampling)。
粒子滤波的应用非常广泛,尤其是在目标跟踪(“A probabilistic framework for matching temporal trajectories”)等视觉任务方面。粒子滤波算法有许多不同的改进方式。针对不同的问题,PF算法被改造以适应更好的问题。本文主要侧重于目标跟踪方面的应用。以人脸跟踪为例,下图展示了粒子滤波的跟踪结果。下面介绍下粒子滤波的基本过程:初始化、概率转移、权重重计算和重采样四个阶段。
1.初始化阶段
跟踪区域初始化。在使用粒子滤波算法进行目标跟踪前需要选择要跟踪的目标物体。这个过程可以用人工划定方法和自动识别方法。使用人工的方法可以通过鼠标在图像区域标记出一个感兴趣矩形;使用自动的方法就是利用自动的目标检测技术,初步检测出图像中要跟踪物体的大致位置。以人脸跟踪为例,人工方法就是鼠标划定视频第一帧中人脸的区域;自动方法就是可以使用人脸检测算法检测出人脸的初始位置。
粒子初始化。对于本文人脸检测的示例,粒子就是图像中的矩形区域,主要由矩形中心(x,y)和宽高(w,h)四个变量表示。粒子初始化的步骤,就是在图像中选择指定数量的粒子(矩形),比如N=100个粒子。粒子初始化过程就是在图像中随机或指定方式放粒子。比如说,我们可以指定100个粒子初始状态和跟踪区域一致,即粒子参数和跟踪区域的(x,y,w,h)相等。
2.状态转移阶段
使用粒子滤波算法来对目标进行跟踪,即是通过前一次的先验概率来估算出当前环境下的后验概率密度,这个过程也是由粒子来完成的。具体来说,即根据上一帧中粒子的状态(x,y,w,h)t-1,来估计出本帧中各个粒子的状态(x,y,w,h)t。从上一帧图像的粒子状态转变为当前帧粒子的状态,这个变异过程就叫作转移(transmission)。粒子滤波的转移方程跟Kalman滤波的差不多:
上面的是状态转移方程,下面的为观测方程,wk和vk是高斯噪声。在本文示例中,xk=(x,y,w,h)t。变量x,y,w,h可以依据公式(1)分别更新。在不同的算法中,f采用的函数也不相同。如果xk=xk-1+wk,则状态转移方程其实是随机游走过程;如果xk=Axk-1+wk,状态转移方程则为一阶自回归方程;如果xk=A1xk-1+A2xk-2+wk,则状态转移方程为二阶自回归方程。
3.权重重计算阶段
转移阶段将上一帧中粒子的位置进行了转移,得到当前帧中新的位置。但并不是所有粒子的作用都有用。也就是有些粒子并不是跟踪区域所要所移动的位置。因此,在此阶段,粒子滤波算法将对每个粒子进行打分,将得分较低的粒子删除,将得分多的粒子生成更多的粒子(重采样过程完成)。具体打分的方法根据不同的需求会不同,例如人脸跟踪方法中使用距离作为衡量的标准。将每个粒子与跟踪区域进行相似度计算(在这里,分别提取粒子和跟踪区域的视觉特征进行计算,比如颜色直方图),使用相似度作为相应粒子的权重。每一个粒子都需要计算其权重,并且需要将其归一化。该阶段其实也是后验概率进行更新的过程。
4.重采样阶段
粒子滤波算法会淘汰权值低的粒子,让权值高的粒子来产生出更多的粒子,这就使得算法朝着权值高的地方收敛。假设有100个粒子,1号粒子的权重为0.02而2号粒子的权重为0.003。于是在重采样阶段,1号粒子生孩子的指标是0.02×100=2,2号粒子的指标是0.003×100=0.3,可以发现,1号粒子除了刚产生的粒子外还要再额外的产生一个粒子,而2号粒子就被铲除了。如此,最后得到的100个粒子即为所求,然后取个加权平均就得到了目标的状态值。
㈤ 扩展卡尔曼滤波(EKF)算法详细推导及仿真(Matlab)
姓名:王柯祎
学号:20021110373T
转自 :https://blog.csdn.net/gangdanerya/article/details/105105611
【嵌牛导读】介绍扩展卡尔曼滤波(EKF)算法的详细推导,局限性和MATLAB仿真。
【嵌牛鼻子】扩展卡尔曼滤波(EKF)
【嵌牛正文】
扩展卡尔曼滤波算法 是解决非线性状态估计问题最为直接的一种处理方法,尽管EKF不是最精确的”最优“滤波器,但在过去的几十年成功地应用到许多非线性系统中。所以在学习非线性滤波问题时应该先从EKF开始。
EKF算法是将非线性函数进行泰勒展开,然后省略高阶项,保留展开项的一阶项,以此来实现非线性函数线性化,最后通过卡尔曼滤波算法近似计算系统的状态估计值和方差估计值。
一、EKF算法详细推导
【注】EKF推导参考的是黄蔚的博士论文“CKF及鲁棒滤波在飞行器姿态估计中的应用研究”,论文中EKF,UKF和CKF等算法讲解的都很详细,值得一看。
我们把KF与EKF算法拿出来对比可以发现:
二、EKF算法局限性:
该算法线性化会引入阶段误差从而导致滤波精度下降,同时当初始状态误差较大或系统模型非线性程度较高时,滤波精度会受到严重影响甚至发散。
需要计算雅克比矩阵,复杂,计算量大,影响系统的实时性,还会导致EKF算法的数值稳定性差。
当系统存在模型失配,量测干扰,量测丢失,量测延迟或状态突变等复杂情况时,EKF算法鲁棒性差。
三、Matlab仿真:
clear all;clc; close all;
tf = 50;
Q = 10;w=sqrt(Q)*randn(1,tf);
R = 1;v=sqrt(R)*randn(1,tf);
P =eye(1);
x=zeros(1,tf);
Xnew=zeros(1,tf);
x(1,1)=0.1;
Xnew(1,1)=x(1,1);
z=zeros(1,tf);
z(1)=x(1,1)^2/20+v(1);
zjian=zeros(1,tf);
zjian(1,1)=z(1);
for k = 2 : tf
%%%%%%%%%%%%%%%模拟系统%%%%%%%%%%%%%%%
x(:,k) = 0.5 * x(:,k-1) + (2.5 * x(:,k-1) / (1 + x(:,k-1).^2)) + 8 * cos(1.2*(k-1)) + w(k-1);
z(k) = x(:,k).^2 / 20 + v(k);
%%%%%%%%%%%%%%%EKF开始%%%%%%%%%%%%%%%
Xpre = 0.5*Xnew(:,k-1)+ 2.5*Xnew(:,k-1)/(1+Xnew(:,k-1).^2) + 8 * cos(1.2*(k-1));
zjian =Xpre.^2/20;
F = 0.5 + 2.5 * (1-Xnew.^2)/((1+Xnew.^2).^2);
H = Xpre/10;
PP=F*P*F'+Q;
Kk=PP*H'*inv(H*PP*H'+R);
Xnew(k)=Xpre+Kk*(z(k)-zjian);
P=PP-Kk*H*PP;
end
t = 2 : tf;
figure; plot(t,x(1,t),'b',t,Xnew(1,t),'r*'); legend('真实值','EKF估计值');
仿真结果:
㈥ 什么是滤波算法
卡尔曼滤波器(Kalman Filter)是一个最优化自回归数据处理算法(optimal recursive data processing algorithm)。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。
最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。
现设线性时变系统的离散状态防城和观测方程为:
X(k) = F(k,k-1)·X(k-1)+T(k,k-1)·U(k-1)
Y(k) = H(k)·X(k)+N(k)
其中
X(k)和Y(k)分别是k时刻的状态矢量和观测矢量
F(k,k-1)为状态转移矩阵
U(k)为k时刻动态噪声
T(k,k-1)为系统控制矩阵
H(k)为k时刻观测矩阵
N(k)为k时刻观测噪声
则卡尔曼滤波的算法流程为:
预估计X(k)^= F(k,k-1)·X(k-1)
计算预估计协方差矩阵
C(k)^=F(k,k-1)×C(k)×F(k,k-1)'+T(k,k-1)×Q(k)×T(k,k-1)'
Q(k) = U(k)×U(k)'
计算卡尔曼增益矩阵
K(k) = C(k)^×H(k)'×[H(k)×C(k)^×H(k)'+R(k)]^(-1)
R(k) = N(k)×N(k)'
更新估计
X(k)~=X(k)^+K(k)×[Y(k)-H(k)×X(k)^]
计算更新后估计协防差矩阵
C(k)~ = [I-K(k)×H(k)]×C(k)^×[I-K(k)×H(k)]'+K(k)×R(k)×K(k)'
X(k+1) = X(k)~
C(k+1) = C(k)~