【卡尔曼滤波】具有梯度流的一类系统的扩散映射卡尔曼滤波器研究(Matlab代码实现)

2024-01-21

???????????????? 欢迎来到本博客 ❤️❤️????????

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

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

???????????? 本文目录如下: ????????????

目录

????1 概述

????2 运行结果

????3 参考文献

????4 Matlab代码、数据、文章


????1 概述

在许多实际应用中,系统模型是不可访问的,因此需要对其进行一些估计。因此,状态估计和对随机、可能非线性的动力系统进行表征是广泛研究的问题。传统上,这些问题是通过使用经典算法来解决的,这些算法依赖于预定义的参数模型。一方面,参数模型需要足够简单,以允许从测量中进行准确的参数估计。另一方面,过于简单的模型往往无法适应真实系统的复杂性。这促进了非参数方法的发展[1]–[5]。特别是在本文中,我们采用了非参数方法,并提出了一种新的方法,以数据驱动的方式推导系统模型。

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

???? 2 运行结果

部分代码:

%% Constrcut diffusion maps with the modified mahalanobis distance

% Compute the modified mahalanobis distance for the (noisy) measurements:
mahDist       = modified_mahalanobis(yM);

% Compute diffusion maps coordinates and eigenvalues:
[psi, lambda] = diffusion_maps(mahDist, DMdim);

%% DMK framework:

% Apply DMK:
[~, yDMK_est] = dmk(psi, lambda, yM, deltaT);

%% Compute estimations of the particle filter:

DriftRate1 = @(t,X) -0.5*(X-1).^3+(X-1); % set true drift parameters
DriftRate2 = @(t,X) -0.5*(X-6).^3+(X-6); % set true drift parameters

% Particle Filter:
y_est_pf = particle_filter( yM, DriftRate1, DriftRate2, deltaT, noiseStd(1)*std(yT,[],2), procStd, InitLoc );

%% Plot trajectory examples - for each SNR:

tt = 100:size(yM,2); % samples to consider - ignoring the first samples in the error calculations due to initialization effect errors

figure
scatter(tt*deltaT,yM(2,tt),20,[0.6,0.6,0.6],'x');
hold on
xlabel('t [sec]','FontSize',14); ylabel('$$r$$','Interpreter','latex','FontSize',16)
plot(tt*deltaT,yT(2,tt),':k','LineWidth',2);
plot(tt*deltaT,y_est_pf(2,tt),'Color',[0.5,0.5,0.5],'LineWidth',2);
plot(tt*deltaT,yDMK_est(2,tt),'b','LineWidth',1);
lgd = legend({'Noisy meas.','Clean meas.','PF estimation','DMK estimation'},'Location','southeast');
lgd.FontSize = 12;
if ~gendata; xlim([2,5]); ylim([2,10]); end
hold off;
set(gcf,'Position',[45,90,560,285]);

????3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

Author: Tal Shnitzer.

???? 4 Matlab代码、数据、文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【卡尔曼滤波】具有梯度流的一类系统的扩散映射卡尔曼滤波器研究(Matlab代码实现) 的相关文章

  • 有没有办法在 MATLAB 中查看 pcode 文件 (.p) 的源代码?

    有没有办法在 MATLAB 中打开 pcode 文件 p 如果 开放 是指edit 那么当然不是 pcode 中的 p 代表 受保护 其主要设计目标是在保护其源代码的同时部署功能组件 如果 开放 是指run 那么当然是的 引用手册 http
  • Matlab-如何在曲线上绘制切线

    我在 matlab 中绘制了一个图表 plot x y 我的图表有不同的斜率 我如何在每个斜率上绘制切线并计算斜率的系数 如果您没有用于绘制点的显式函数 您可以使用有限差分 http en wikipedia org wiki Finite
  • 将此 MATLAB 代码转换为 Python 时我做错了什么?

    我正在努力将生成波形的 MATLAB 代码转换为 Python 就上下文而言 这是原子力显微镜带激发响应的模拟 与代码错误无关 在 MATLAB 中从 r vec 生成的图形与我在 Python 中生成的图形不同 我是否正确地将 MATLA
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • 对多个属性使用一种设置方法 MATLAB

    我有几个属性基本上使用相同的属性set method classdef MyClass properties A B end methods function mc MyClass a b Constructor mc A a mc B b
  • 如何在 MATLAB 中可视化球体的交集?

    似乎这个问题在一些地方被问过 包括SO https stackoverflow com questions 35130336 draws the intersecting volume of two spheres in matlab 我最
  • Matlab:掩码/创建一个知道其原点且具有一定半径的圆形 roi

    只是一个简单的问题 我有一张图像 并且提取了某个点 特征 我知道每个帧中该点的坐标 说 x1 和 y1 我需要一个圆形 ROI 形式 该点在图像上具有我选择的半径 我尝试了 impoly 和 roipoly 当我知道图像中的要点时 不知道如
  • 在 MATLAB 中检索 spfun、cellfun、arrayfun 等中的元素索引

    有什么办法可以找回index调用函数的元素的cellfun arrayfun or spfun行为 即检索函数范围内元素的索引 为了简单起见 假设我有以下玩具示例 S spdiags 1 4 0 4 4 f spfun x 2 x S 它构
  • 扩展 MATLAB 函数名称的最大长度

    我编写了一个 MATLAB 程序 可以动态创建自定义 MATLAB 函数 并使用以下命令在其他 MATLAB 实例中启动它们unix命令 我使用这个程序来自动化 fMRI 神经影像分析 使用 SPM8 for MATLAB 一切正常 但是
  • MATLAB 中的多个捕获组

    我有一个包含数字或字母的字符串a 可能紧随其后的是r or l 在 MATLAB 中 以下正则表达式返回为 gt gt regexp 10r 0 9 a l r match ans 10r 我希望10 and r分开 因为我有两个捕获组 有
  • MATLAB - 如何将子图一起缩放?

    我在一张图中有多个子图 每个图的 X 轴是相同的变量 时间 每个图上的 Y 轴都不同 无论是它所代表的内容还是数据的大小 我想要一种同时放大所有图的时间尺度的方法 理想情况下 可以在其中一张图上使用矩形缩放工具 并让其他图相应地更改其 X
  • 句柄类和值类的区别

    我有一些 C 背景 想使用 Matlab 中的类 句柄和值类有什么区别 我知道如果我想定义一个带有重载运算符 例如 和 的矩阵类 我会使用值类 然而 有时 当我选择一个手柄类时 事情似乎只对我有用 MathWorks 提供了一些有关其用途的
  • 在 MATLAB 中重命名文件

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • 有没有办法在matlab中进行隐式微分

    我经常使用 matlab 来帮助我解决数学问题 现在我正在寻找一种在 matlab 中进行隐式微分的方法 例如 我想区分y 3 sin x cos y exp x 0关于dy dx 我知道如何使用数学方法通常做到这一点 但我一直在努力寻找使
  • Matlab:如何更改矩阵的存储方式?从 1x1x3 到 1x3?

    我目前有 val 1 0 7216 val 2 0 7216 val 3 0 7216 但我想要 0 7216 0 716 0 721 我可以做什么样的操作来做到这一点 The reshape函数将在这里解决问题 Arrange the e
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • 如何使用 MATLAB 的 substruct 函数创建表示使用“end”的引用的结构?

    我想使用substruct http www mathworks com help matlab ref substruct html函数创建一个结构体以供使用subsref 目的是使用索引字符串subsref而不是通常的 符号 因为我正在
  • 理解高斯混合模型的概念

    我试图通过阅读在线资源来理解 GMM 我已经使用 K 均值实现了聚类 并且正在了解 GMM 与 K 均值的比较 以下是我的理解 如有错误请指出 GMM 类似于 KNN 在这两种情况下都实现了聚类 但在 GMM 中 每个簇都有自己独立的均值和
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma
  • 如何在放置颜色条后保持子图大小不变

    假设我们有一个 1 2 子图 我们在其中绘制了一些图形 如下所示 subplot 1 2 1 surf peaks 20 subplot 1 2 2 surf peaks 20 然后我们要添加一个颜色条 colorbar 我不希望结果中的正

随机推荐