4

我有一个使用卡尔曼滤波器的 C++ 算法。在代码中的某处预测四元数q'然后我用卡尔曼滤波器q更新四元数。

我想在 Matlab 中绘制两个图形,预测四元数和校正(更新)四元数的演变,所以我使用“engine.h”库在处理过程中向 Matlab 发送四元数信息(实际上我发送的是 4x1 矩阵) .

所以我的问题是:在 Matlab 中绘制四元数的最佳方法是什么,以便我可以直观地提取信息?单独绘制角度会更好吗?

4

2 回答 2

4

好吧,假设问题是“如何以一种很好的方式可视化 4D 空间”,我可以想到几个选项:

  • 显示空间的多个切片,即 (x,y,z,t) -> (x,y), (y,z) 等。
  • 将 (x,y) 显示为散点图,并将 z 的信息以颜色编码,t 以点的大小编码。为此,您可以使用scatter命令:

SCATTER(X,Y,S,C) 在向量 X 和 Y 指定的位置显示彩色圆圈(必须相同大小)。

如果您的问题是“如何以一种不错的方式可视化四分位数, 请查看

于 2012-01-11T13:08:28.487 回答
4

我认为一个不错的选择是使用 C++ MATLAB 引擎将四元数作为向量发送到 MATLAB

[qx qy qz qw]

然后,在 MATLAB 环境中,您可以使用工具箱转换为欧拉角,这是一种常见的视觉选项。

在 matlab 引擎中添加工具箱的路径:

addpath(genpath('C:\Program Files (x86)\MATLAB\R2010a\toolbox\SpinCalc'));

使用 spincalc 工具箱,转换将是这样的:

Angles=SpinCalc('QtoEA321',Quaternion,0,0);
于 2012-07-03T11:27:39.757 回答