在Matlab中使用“绘制四元数”;引擎.h“;来自c++; 我在C++中使用了卡尔曼滤波算法。在代码中的某个地方,我预测一个四元数q',然后用卡尔曼滤波器q更新四元数

在Matlab中使用“绘制四元数”;引擎.h“;来自c++; 我在C++中使用了卡尔曼滤波算法。在代码中的某个地方,我预测一个四元数q',然后用卡尔曼滤波器q更新四元数,matlab,quaternions,matlab-figure,matlab-engine,Matlab,Quaternions,Matlab Figure,Matlab Engine,我想在Matlab中绘制两个图形,其中包括预测的四元数和校正(更新)的四元数的演变,因此我使用“engine.h”库在处理过程中将四元数信息发送到Matlab(实际上我发送的是4x1矩阵) 所以我的问题是:在Matlab中绘制四元数以便直观地提取信息的最佳方法是什么?单独绘制角度是否更好?好吧,假设问题是“如何以良好的方式可视化4D空间”, 我可以想出几个选择: 显示空间的多个切片,即(x,y,z,t)->(x,y),(y,z)等 将(x,y)显示为散点图,并将z的信息编码为颜色,t的信息编码

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


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

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

  • 显示空间的多个切片,即(x,y,z,t)->(x,y),(y,z)等
  • 将(x,y)显示为散点图,并将z的信息编码为颜色,t的信息编码为点的大小。为此,您可以使用散布命令:
散射(X、Y、S、C)在指定位置显示彩色圆圈 通过向量X和Y(大小必须相同)

如果你的问题是“如何以一种好的方式形象化四分之一”,
我认为一个好的选择是将四元数作为向量传递到Matlab,用C++ Matlab引擎< /P> [qx qy qz qw]

然后,在MATLAB环境中,您可以使用a转换为Euler角度,这是一个常见的视觉选项

要在matlab引擎中添加工具箱的路径,请执行以下操作:

addpath(genpath('C:\Program Files (x86)\MATLAB\R2010a\toolbox\SpinCalc'));
使用spincalc工具箱,转换如下:

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

您的问题标题与实际问题不符。如果我没有弄错的话,您的问题与“engine.h”无关“或者C++,对吗?它有,因为我会从C++代码中发送命令,这会带来一些问题,所以以后我可能会编辑显示完整代码的问题。但是,这个问题确实也可以用matlab来思考。