具有梯度流的一类系统的扩散图卡尔曼滤波(Matlab代码实现)

 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

本文提出了一种非参数方法,用于高维非线性随机动力系统的状态估计,这些系统根据各向同性扩散的梯度流演化。我们将扩散映射(一种流形学习技术)与线性卡尔曼滤波器和Koopman算子理论的概念相结合。更具体地说,使用扩散图,我们构建了数据驱动的虚拟状态坐标,使系统模型线性化。基于这些坐标,我们设计了一个使用卡尔曼滤波器进行状态估计的数据驱动框架。我们在三个跟踪问题中展示了我们的方法在参数和非参数算法方面的优势。特别是,将该方法应用于啮齿动物海马神经活动的实际记录,直接产生动物位置的表示。结果表明,所提出的方法在所检验的随机问题公式中优于竞争的非参数算法。此外,我们获得了与经典参数算法相当的结果,与我们的方法相比,经典参数算法配备了模型知识。

更多讲解见参考文献。

📚2 运行结果

 

 

部分代码:

% Construct the diffusion maps kernel and eigenvectors
% ***************************************************************@

function [psi, lambda] = diffusion_maps(dis, DMdim)
%DIFFUSION_MAPS constructs the diffusion maps kernel based on the distance
% matrix 'dis' and returns the (non-trivial) eigenvectors 'psi' and 
% eigenvalues 'lambda' of dimension DMdim.

%% Construct diffusion maps

ep = 2*median(dis(:));  % kernel scale - may require some tuning for different data
W  = exp(-dis/ep);      % distance kernel
D  = diag(1./sum(W,2)); % kernel normalization term
A  = D*W;               % normalized diffusion maps kernel

[psi, mu]        = eigs(A,DMdim+1);
[muSrtd, srtInd] = sort(diag(mu),'descend');

lambda = (2/ep)*log(muSrtd(2:end));
psi    = psi(:,srtInd(2:end));

% Construct the diffusion maps kernel and eigenvectors
% ***************************************************************@

function [psi, lambda] = diffusion_maps(dis, DMdim)
%DIFFUSION_MAPS constructs the diffusion maps kernel based on the distance
% matrix 'dis' and returns the (non-trivial) eigenvectors 'psi' and 
% eigenvalues 'lambda' of dimension DMdim.

%% Construct diffusion maps

ep = 2*median(dis(:));  % kernel scale - may require some tuning for different data
W  = exp(-dis/ep);      % distance kernel
D  = diag(1./sum(W,2)); % kernel normalization term
A  = D*W;               % normalized diffusion maps kernel

[psi, mu]        = eigs(A,DMdim+1);
[muSrtd, srtInd] = sort(diag(mu),'descend');

lambda = (2/ep)*log(muSrtd(2:end));
psi    = psi(:,srtInd(2:end));

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]Tal Shnitzer, Ronen Talmon, Jean-Jacques Slotine (2020) Diffusion Maps Kalman Filter for a Class of Systems with Gradient Flows.

🌈4 Matlab代码实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值