💥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.