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