在Matlab中从四元数中获取欧拉角

时间:2012-01-17 16:42:09

标签: matlab quaternions euler-angles

我有一个四元数的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个向量的函数)或者我是否必须编写一些代码来为每个时间步进行转换?提前谢谢。

1 个答案:

答案 0 :(得分:6)

我认为没有内置的Matlab功能来执行您想要的功能。

但是,Mathworks用户社区中有一个功能,我相信您正在寻找的功能。 spinCalc这将在各种旋转类型DCM,欧拉角,欧拉矢量和四元数之间进行转换。

请注意以上帖子中关于欧拉角集和您正在使用的旋转顺序的评论。

  

将数据转换为欧拉角时,必须确保   你翻译的方向并不是一个奇点。单数   欧拉集是不能唯一地转换为3的方向   该特定轮换顺序中的变量。奇异集如下   如下:

     

类型1旋转:123 - 132 - 213 - 231 - 321 - 312   如果第二旋转角度是-90或90度,则是奇异的。

     

类型2轮换:121 - 131 - 212 - 232 - 313 - 323   如果第二个旋转角度为0或180度,则为奇异。