使用c ++中的“engine.h”在Matlab中绘制四元数

时间:2012-01-11 08:44:26

标签: matlab quaternions matlab-figure matlab-engine

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

我想在Matlab中绘制两个图形,其中包含预测四元数和校正(更新)四元数的演变,因此我使用“engine.h”库在处理期间将四元数信息发送到Matlab(实际上我发送的是4x1矩阵)。

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

2 个答案:

答案 0 :(得分:4)

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

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

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

如果您的问题是“如何以美妙的方式想象出四分之一,  check this out

答案 1 :(得分:4)

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

  

[qx qy qz qw]

然后,在MATLAB环境中,您可以使用toolbox转换为Euler Angles,这是一种常见的视觉选项。

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

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

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

Angles=SpinCalc('QtoEA321',Quaternion,0,0);