我有四元数的X,Y,Z和W分量,通过时间,在4个分离的向量中。

  QW             1x346             2768  double
  QX             1x346             2768  double
  QY             1x346             2768  double
  QZ             1x346             2768  double

我想转换成欧拉角,以便在三个不同的子块中绘制3个欧拉分量,所以我需要3个这样的向量。
  heading(t)          1x346
  attitude(t)         1x346
  bank(t)             1x346

在matlab中有没有一种中间的方法来得到这个(我的意思是一个函数输入我的4个向量,然后输出上面的3个向量)或者我必须编写一些代码来进行每个时间步的转换提前谢谢。

最佳答案

我不认为有一个内置的Matlab函数来执行你想要的。
但是,Mathworks用户社区中有一个函数,我相信这正是您所要寻找的spinCalc这将在各种旋转类型DCM、Euler角度、Euler向量和四元数之间进行转换。
请注意上面关于欧拉角度集和你使用的旋转顺序的评论。
将数据转换为Euler角度时,必须确保
你要翻译的方向不接近奇点单数
Euler集是不能唯一转换为3的方向
以特定的旋转顺序排列的变量奇异集是
跟随:
1型旋转:123-132-213-231-321-312
如果第二个旋转角度为-90或90度,则为单数
2型旋转:121-131-212-232-313-323
如果第二个旋转角度为0或180度,则为单数。

10-08 04:22