2012-01-17 238 views
3

我有4个分开的向量中的四元数的X,Y,Z和W分量。从Matlab中的四元数中获取欧拉角度

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的inmediate办法让这(我指的是输入我的4个向量和输出功能的上述3个矢量)或做我必须写一些代码,使每个时间步长的转换?提前致谢。

回答

6

我不认为有一个内置的Matlab函数来执行你想要的。

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

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

将数据转换为欧拉角时,必须确保您正在翻译的 方向不在奇点附近。单数 欧拉集是不能唯一转换为特定旋转顺序的变量的方向。单数组为 如下:

类型1旋转:123-132-213-231-321-312 如果第二旋转角度为-90或90度,则为单数。

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

+0

+1。谢谢你的回答,看起来很有意思,明天我会仔细检查一下。我有关于四元数和旋转的很好的文档,所以我会小心。如果你不知道检查这个页面,你就拥有了关于3D空间的一切(除了一个好的索引或浏览器哈哈)! http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/ – 2012-01-17 18:19:14

+0

+1 - 如果你能找到其他人做过的话,永远不会重写! – Marc 2012-01-17 21:50:54

+1

@Jav_Rock同样作为关于spinCalc函数的一个注释:您要求标题,态度和银行,所以我认为您应该使用'QtoEA123'选项来调用spinCalc。因为这些应该对应于x,y,z旋转。 – 2012-01-17 22:14:13