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

  • 在 GUI 内的子图中添加滚动条

    如何向子图添加滚动条 我已经阅读了很多教程 但它们似乎很难理解 例如 滚动图形演示 http www mathworks com matlabcentral fileexchange 5253 scrolling figure demo 有
  • 将 MATLAB 单元格类型转换为 C++

    我正在使用 C 转换 MATLAB 程序犰狳 http arma sourceforge net docs html syntax对于矩阵代数 我被困住了cell http blogs mathworks com loren 2006 06
  • 隐藏图中某些图形对象的 MATLAB 图例条目

    MATLAB 图例列出了绘图中的所有内容 包括您在绘图上放置的指南 绕过这个问题的软糖就是要做的 Plot Add legend Add guidelines 然而 MATLAB 将最新的行放在前面 这意味着指南将位于显示的数据之上 丑陋且
  • Octave/Matlab:向向量添加新元素

    有一个向量x我必须添加一个元素 newElem 有什么区别吗 x end 1 newElem and x x newElem x end 1 newElem更稳健一些 x x newElem 仅当x是行向量 如果它是列向量x x newEl
  • matlab中的分箱

    我一直无法在 matlab 或 Octave 中找到函数来完成我想要的操作 我有一个两列的矩阵 m x 和 y 值 我知道我可以通过执行 m 1 或 m 2 来提取列 我想将其分成 可能 大小相等的较小矩阵 并绘制这些矩阵的平均值 换句话说
  • DYMOLA:opc 服务器如何使用 MATLAB 使用 dsin.txt 或 mat 文件进行初始化

    我在 DYMOLA 中创建了一个 OPC 服务器 现在我在 DYMOSIM 中有这个可以单击并初始化 使用 dsin txt 的 MAT 文件 现在我在 MATLAB 中创建了一个 GUI 文件 并获取变量的输入并创建了一个 mat 文件
  • iOS 将 URL 中的音频分成帧

    我正在 iOS 上开发一个简单的网络广播应用程序 具有非常简单的语音 音乐识别功能 主要思想是一个收音机 它播放来自 url 的信号 同时检查正在广播的信号类型 当它检测到语音时 它会改变频道等等 我使用 Storyboards 和 AVF
  • 梯度下降Matlab实现

    我已经浏览了堆栈溢出中的许多代码 并在同一行上编写了自己的代码 这段代码有一些问题我无法理解 我正在存储值 theta1 和 theta 2 以及用于分析目的的成本函数 x 和 Y 的数据可以从此下载页 它具有 dat 文件形式的 x 和
  • Google Chrome 的互联网历史记录脚本

    我并不是在寻找 最佳 或最有效的脚本来执行此操作 但我想知道是否存在一个脚本可以从 Google Chrome 中提取一天的互联网历史记录并将其记录到 txt 文件中 我更喜欢用 Python 或 MATLAB 编写 如果你们有不同的方法
  • 在Matlab中使用中心切片定理实现滤波反投影算法

    我正在研究一种使用中心切片定理的滤波反投影算法作为家庭作业 虽然我理解纸上的理论 但在 Matlab 中实现它时遇到了问题 我得到了一个可以遵循的框架 但我认为我可能误解了一个步骤 这是我所拥有的 function img sampleFB
  • 我的 matlab 图中需要不同的颜色

    这是我的情节代码 问题是我的图中的两条线具有相同的颜色 我需要为图中的每条线 总共 4 条线 分配一个特殊的颜色 for i 1 nFolderContents data hdrload folderContents i if size f
  • 朴素分类器 matlab

    在 matlab 中测试朴素分类器时 即使我在相同的样本数据上进行训练和测试 我也会得到不同的结果 我想知道我的代码是否正确 是否有人可以帮助解释这是为什么 dimensionality reduction columns 6 U S V
  • 有没有办法在 Visual Studio 或 MATLAB 中“映射”程序执行顺序?

    我所说的 地图 是指我有一个 主 函数 它调用内部的许多其他程序 我希望能够看到哪个文件首先运行 第二个 第三个等等 基本上 我希望能够请参阅这个大型 OOP 设计程序 创建者没有为其制作 UML 类图 中的依赖项列表和顺序 以帮助破译代码
  • 在Matlab中将矩阵中的元素i,j设置为i*j

    我想生成一个矩阵 其中 i j 元素等于 i j 其中 i j e g 0 2 3 2 0 6 3 6 0 到目前为止 我已经发现我可以使用这个索引矩阵访问非对角线元素 idx 1 eye 3 但我还没有弄清楚如何将矩阵单元的索引合并到计算
  • MATLAB 图像锐化 - 使用(1-高斯低通滤波器)的高斯高通滤波器

    我试图通过设计高斯高通滤波器来锐化图像 我想利用高通滤波器相当于单位矩阵减去低通滤波器的事实来做到这一点 所以我执行了以下操作 image imread Question3 Data Cats jpg read image H 1 fspe
  • MATLAB:生成给定三种颜色的颜色图

    我正在尝试在 MATLAB 中生成给定三种颜色 最高值 零值和最低值 的颜色图 我的思维过程是从最高端到中间循环 并将每个步骤存储到一个 3xN 第一列是 R 第二列是 G 第三列是 B 矩阵 所以我正在使用 fade from high
  • 带 if 语句的可向量化 FIND 函数 MATLAB

    我有一个矩阵u 我想遍历所有行和所有列并执行以下操作 如果元素非零 我返回行索引的值 如果元素为零 则查找该元素之后的下一个非零元素的行索引 我可以使用两个带有 find 函数的 for 循环轻松完成此操作 但我需要多次执行此操作 不是因为
  • 与超类和子类构造函数接口

    我在 matlab 文档和之前有关使用 matlab 继承和类构造函数创建接口的问题中找不到帮助 为了使其整洁 放在一个包内 我可以将其压缩如下 而不是拖拽代码 一套 MyPkg有一个超类Super和一些子类Sub1 Sub2 我的大多数属
  • MATLAB 链表

    有哪些可能的方法来实现链表MATLAB http en wikipedia org wiki MATLAB 注意 我问这个问题是为了教学价值 而不是实用价值 我意识到 如果您实际上在 MATLAB 中滚动自己的链表 那么您可能做错了什么 然
  • 是否有一个函数可以将两个元胞数组“压缩”在一起? [复制]

    这个问题在这里已经有答案了 假设我有一个元胞数组A and B as so A A B C D B 1 2 3 4 我想创建元胞数组C通过将 A 和 B 压缩 在一起 如下所示 C zip A B C A 1 B 2 C 3 D 4 这样的

随机推荐