【卡尔曼滤波】具有梯度流的一类系统的扩散映射卡尔曼滤波器研究(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代码实现) 的相关文章

  • 在 Excel 中打印 MATLAB 图窗并调整其大小

    我在 MATLAB 中有两个带有手柄的图形hFig1 and hFig2 我想将它们打印到 Excel 中的特定单元格 单元格 E3 和 I3 并将它们重新调整为 2 英寸 x 3 英寸 我尝试过使用 AddPictures对象处理程序和使
  • 如何让MCR启动时间快

    我将 matlab 程序转换为 net 程序集 即 dll 文件 我制作了一个控制台 C 应用程序 添加了 dll 文件并从 php 调用它 每次调用 exe 时都会调用 MCR 如何使 MCR 在服务器启动时初始化 并且即使在一段时间后调
  • matlab mex 文件和 C++ dll (Windows)

    我有一个带有 Test 类的 DLL 标题 class MY EXPORT Test public int doit const string str 和来源 int Test doit const string str return in
  • 在 MATLAB 中使用 FFT 的频率响应

    这是场景 使用频谱分析仪 我有输入值和输出值 样本数是32000采样率为2000样本 秒 输入是正弦波50 hz 输入为电流 输出为压力 单位 psi 我如何使用 MATLAB 根据这些数据计算频率响应 使用 MATLAB 中的 FFT 函
  • 按元素出现的频率对数组元素进行排序

    是否可以在 matlab octave 中使用sort函数根据元素的相对频率对数组进行排序 例如数组 m 4 4 4 10 10 10 4 4 5 应该产生这个数组 5 10 10 10 4 4 4 4 4 5是出现频率较低的元素 位于顶部
  • Matlab - 如果值包含xxx,则删除元胞数组中的行

    在 Matlab 中 如何删除包含变量字符串的元胞数组中的元胞 假设我的元胞数组是 C svnTrunk RadarLib radarlb utilities scatteredInterpolant m C svnTrunk RadarL
  • 如何在 Matlab 中使用谷歌翻译?

    我正在编写一个程序 使用 Matlab 列出电影字幕文件中的所有唯一单词 现在我有一个独特的单词列表 我想将其翻译成我的语言并在观看电影之前了解其含义 有谁知道如何在 Matlab 中使用 Google Translate 以便完成我的脚本
  • 不等间隔时间序列的移动平均线

    我有一个证券交易所股票价格的数据集 时间 价格 但数据点之间的间隔并不相等 从 1 到 2 分钟不等 在这种情况下计算移动平均值的最佳实践是什么 如何在Matlab中实现呢 我倾向于认为 点的权重应该取决于自上一个点以来的最后时间间隔 Ma
  • 句柄类和值类的区别

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

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • 如何在 Matlab 中对数组应用低通或高通滤波器?

    有没有一种简单的方法可以将低通或高通滤波器应用于 MATLAB 中的数组 我对 MATLAB 的强大功能 或数学的复杂性 有点不知所措 需要一个简单的函数或一些指导 因为我无法从文档或网络搜索中找到答案 看着那 这filter http w
  • 有没有办法在matlab中进行隐式微分

    我经常使用 matlab 来帮助我解决数学问题 现在我正在寻找一种在 matlab 中进行隐式微分的方法 例如 我想区分y 3 sin x cos y exp x 0关于dy dx 我知道如何使用数学方法通常做到这一点 但我一直在努力寻找使
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB
  • MATLAB - 冲浪图数据结构

    我用两种不同的方法进行了计算 对于这些计算 我改变了 2 个参数 x 和 y 最后 我计算了每种变体的两种方法之间的 误差 现在我想根据结果创建 3D 曲面图 x gt on x axis y gt on y axis Error gt o
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得
  • 图像处理 - 使用 opencv 进行服装分割

    我正在使用 opencv 进行服装特征识别 第一步 我需要通过从图像中移除脸部和手来分割 T 恤 任何建议表示赞赏 我建议采用以下方法 Use 阿德里安 罗斯布鲁克的用于检测皮肤的皮肤检测算法 谢谢罗莎 格隆奇以获得他的评论 在方差图上使用
  • 对数据进行分布拟合 - MATLAB

    我正在尝试对从显微镜图像中收集的一些数据进行分布 我们知道 152 左右的峰值是由于泊松过程造成的 我想将分布拟合到图像中心的大密度 同时忽略高强度数据 我知道如何将正态分布拟合到数据 红色曲线 但它不能很好地捕获右侧的重尾 尽管泊松分布应
  • Matlab dec2bin 给出错误的值

    我正在使用 Matlab 的 dec2bin 将十进制数转换为二进制字符串 但是 我得到了错误的结果 例如 gt gt dec2bin 13339262925365424727 ans 101110010001111010010100111
  • matlab中求和函数句柄

    Hi我试图对两个函数句柄求和 但它不起作用 例如 y1 x x x y2 x x x 3 x y3 y1 y2 我收到的错误是 对于 function handle 类型的输入参数 未定义函数或方法 plus 这只是一个小例子 实际上我实际

随机推荐