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