matlab 中旋转矩阵、欧拉角、四元数之间的变换

matlab 中旋转矩阵、欧拉角、四元数之间的变换

  1. 欧拉角表示旋转矩阵
  2. 使用matlab函数进行转换
syms  x;
syms  y;
syms  z;
% 欧拉角 

x=pi/3;y=pi/4;z=pi/6;
r11= cos(z) * cos(y);
r12=cos(z) * sin(y) * sin(x) - sin(z) * cos(x);
r13=cos(z) * sin(y) * cos(x) + sin(z) * sin(x);
r21=sin(z) * cos(y);
r22=sin(z) * sin(y) * sin(x) + cos(z) * cos(x);
r23=sin(z) * sin(y) * cos(x) - cos(z) * sin(x);
r31=-sin(y);
r32=cos(y) * sin(x);
r33=cos(y) * cos(x);

R = [  r11    r12   r13;
        r21    r22   r23;
        r31    r32   r33                 
     ]
% rr=roundn(rr,-6);

%一
q =dcm2quat(R)       %旋转矩阵转四元数
R
R1=quat2dcm([q(1)  q(2) q(3) q(4)])%四元数转旋转矩阵
%以上,由 R--->q,再由q--->R1,互相验证

%二
x=pi/3;y=pi/4;z=pi/6;  
q1=angle2quat(x,y,z)%欧拉角转四元数
                    % All rotation sequences, S, are supported: 'ZYX', 'ZYZ', 'ZXY', 'ZXZ',
                    %   'YXZ', 'YXY', 'YZX', 'YZY', 'XYZ', 'XYX', 'XZY', and 'XZX'.

%[x1,y1,z1]=quat2angle([q1(1)  q1(2) q1(3) q1(4)])%四元数转欧拉角   得x1=pi/3,y1=pi/4,z1=pi/6
%以上,由 x,y,z---->q1,再由q1---->x1,y1,z1,互相验证

%四
R2=angle2dcm(pi/6,pi/4,pi/3)%欧拉角转旋转矩阵
                            %q = angle2quat( yaw, pitch, roll )
inv(R2)
%以上,由x,y,z---->R2,求R2的inv 与之前求得的R,R1均一致


命令行窗口

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值