我在C ++中有一个使用卡尔曼滤波器的算法。在代码中的某处预测四元数 q'然后我用卡尔曼滤波器 q 更新四元数。
我想在Matlab中绘制两个图形,其中包含预测四元数和校正(更新)四元数的演变,因此我使用“engine.h”库在处理期间将四元数信息发送到Matlab(实际上我发送的是4x1矩阵)。
所以我的问题是:在Matlab中绘制四元数的最佳方法是什么,以便我可以直观地提取信息?是否可以更好地分别绘制角度?
答案 0 :(得分:4)
好吧,假设问题是“如何以一种很好的方式可视化4D空间”, 我可以想到几个选择:
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);