欧拉角转旋转矩阵公式:

旋转矩阵转欧拉角公式:

旋转矩阵转四元数公式,其中1+r11+r22+r33>0:

四元数转旋转矩阵公式,q0^2+q1^2+q2^2+q3^2=1:

欧拉角转四元数公式:

四元数转欧拉角公式:

matlab代码如下:

clear all;
close all;
clc; %欧拉角
x = 0.5;
y = 0.6;
z = 0.7;
Ang1 = [x y z]; %欧拉角转旋转矩阵
Rx = [ ;
cos(x) -sin(x);
sin(x) cos(x)];
Ry = [cos(y) sin(y);
;
-sin(y) cos(y)];
Rz = [cos(z) -sin(z) ;
sin(z) cos(z) ;
];
R = Rz*Ry*Rx;
R1 = R; %旋转矩阵转欧拉角
x = atan2(R(,),R(,));
y = atan2(-R(,),sqrt(R(,)^+R(,)^));
z = atan2(R(,),R(,));
Ang2 = [x y z]; %旋转矩阵转四元数
t=sqrt(+R(,)+R(,)+R(,))/;
q=[t (R(,)-R(,))/(*t) (R(,)-R(,))/(*t) (R(,)-R(,))/(*t)];
Q1 = q; %四元数转旋转矩阵
R=[ *q().^-+*q()^ *(q()*q()-q()*q()) *(q()*q()+q()*q());
*(q()*q()+q()*q()) *q()^-+*q()^ *(q()*q()-q()*q());
*(q()*q()-q()*q()) *(q()*q()+q()*q()) *q()^-+*q()^];
R2 = R; %欧拉角转四元数
q = [cos(x/)*cos(y/)*cos(z/) + sin(x/)*sin(y/)*sin(z/) ...
sin(x/)*cos(y/)*cos(z/) - cos(x/)*sin(y/)*sin(z/) ...
cos(x/)*sin(y/)*cos(z/) + sin(x/)*cos(y/)*sin(z/) ...
cos(x/)*cos(y/)*sin(z/) - sin(x/)*sin(y/)*cos(z/)];
Q2 = q; %四元数转欧拉角
x = atan2(*(q()*q()+q()*q()), - *(q()^+q()^));
y = asin(*(q()*q() - q()*q()));
z = atan2(*(q()*q()+q()*q()), - *(q()^+q()^));
Ang3 = [x y z]; Ang1
Ang2
Ang3 R1
R2 Q1
Q2

参考:

https://blog.csdn.net/lql0716/article/details/72597719

https://www.cnblogs.com/21207-iHome/p/6894128.html

matlab练习程序(旋转矩阵、欧拉角、四元数互转)的更多相关文章

  1. matlab练习程序(求向量间的旋转矩阵与四元数)

    问题是这样,如果我们知道两个向量v1和v2,计算从v1转到v2的旋转矩阵和四元数,由于旋转矩阵和四元数可以互转,所以我们先计算四元数. 我们可以认为v1绕着向量u旋转θ​角度到v2,u垂直于v1-v2 ...

  2. matlab练习程序(SUSAN检测)

    matlab练习程序(SUSAN检测) SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny.不过思想还是有点意思的. 主要思想就是:首先做一个和原图像 ...

  3. (转)matlab练习程序(HOG方向梯度直方图)

    matlab练习程序(HOG方向梯度直方图)http://www.cnblogs.com/tiandsp/archive/2013/05/24/3097503.html HOG(Histogram o ...

  4. matlab练习程序(对应点集配准的四元数法)

    这个算是ICP算法中的一个关键步骤,单独拿出来看一下. 算法流程如下: 1.首先得到同名点集P和X. 2.计算P和X的均值up和ux. 3.由P和X构造协方差矩阵sigma. 4.由协方差矩阵sigm ...

  5. matlab示例程序--Motion-Based Multiple Object Tracking--卡尔曼多目标跟踪程序--解读

    静止背景下的卡尔曼多目标跟踪 最近学习了一下多目标跟踪,看了看MathWorks的关于Motion-Based Multiple Object Tracking的Documention. 官网链接:h ...

  6. matlab练习程序(透视投影,把lena贴到billboard上)

    本练习程序是受到了这个老外博文的启发,感觉挺有意思,就尝试了一下.他用的是opencv,我这里用的是matlab. 过去写过透视投影,当时是用来做倾斜校正的,这次同样用到了透视投影,不过更有意思,是将 ...

  7. matlab练习程序(多圆交点)

    最近总是对计算几何方面的程序比较感兴趣. 多圆求交点,要先对圆两两求交点. 有交点的圆分为相切圆和相交圆. 相切圆求法: 1.根据两圆心求直线 2.求公共弦直线方程 3.求两直线交点即两圆切点. 相交 ...

  8. matlab练习程序(矩形变换为单连通形状)

    变换使用的模板必须是单连通的,而且模板中心必须在模板内,如果在模板中打个结或是月牙形,这里的程序就处理不了了. 虽然非单连通模板也有办法处理,不过不是这里要讨论的. 这里用到的方法和矩形变换为圆那片文 ...

  9. matlab练习程序(渲染三原色)

    这里我用的空间是x向右为正,y向下为正,z向屏幕里面为正.相当于标准右手系绕x轴旋转了180度. 将三个点光源放在 r = [0.3,0,0.5];g = [0.3,-0.5*cos(pi/6),-0 ...

随机推荐

  1. 【WebAPI】从零开始学会使用.NET Core WebAPI

    介绍 以后会慢慢总结在项目使用中或者学习到的webAPI相关的知识,在这里做记录. 我会从最开始的如何创建WebAPI项目到项目的后续知识一点一点的开始讲述记录. 通过简单有效的方式,让我们能够快速的 ...

  2. 如何测量并报告ASP.NET Core Web API请求的响应时间

    介绍 大家都知道性能是API的流行语.而相应时间则是API性能的一个重要并且可测量的参数.在本文中,我们将了解如何使用代码来测量API的响应时间,然后将响应时间数据返回到客户端. 作者:依乐祝 原文地 ...

  3. mysql 开发基础系列5 字符串函数

    字符串函数 1.  concat (s1,s2,...sn) 连接里面的参数成一个字符串(注意上面写错了函数名称) SELECT CONCAT('ddd','CCC'); 2.  insert(str ...

  4. 浅谈canvas中的拖尾效果

    引言 很早就想了解以下 canvas 中的拖尾效果(如彗星,烟花等效果)是怎么实现的,但是一直没有深入了解,正巧在 codepen 上看到一个 demo,代码简单,效果炫酷,故有此文. 什么黑科技 在 ...

  5. ES6 系列之私有变量的实现

    前言 在阅读 <ECMAScript 6 入门>的时候,零散的看到有私有变量的实现,所以在此总结一篇. 1. 约定 实现 class Example { constructor() { t ...

  6. Go基础系列:struct和嵌套struct

    struct struct定义结构,结构由字段(field)组成,每个field都有所属数据类型,在一个struct中,每个字段名都必须唯一. 说白了就是拿来存储数据的,只不过可自定义化的程度很高,用 ...

  7. React Fiber源码分析 第三篇(异步状态)

    先附上流程图~ 调用setState时, 会调用classComponentUpdater的enqueueSetState方法, 同时将新的state作为payload参数传进 enqueueSetS ...

  8. LeetCode哈希表

    1. Two Sum https://leetcode.com/problems/two-sum/description/ 不使用额外空间需要n*n的复杂度 class Solution { publ ...

  9. SELECT INTO和INSERT INTO SELECT的区别

    数据库中的数据复制备份 SELECT INTO: 形式: SELECT value1,value2,value3 INTO Table_2 FROM Table_1 Table_2表存在,报错:数据库 ...

  10. 如何加入Microsoft Teams 技术社区

    作者:陈希章 时间:2018-11-19   概述 这个手册适合没有Office 365 账号的用户,你可以使用免费版立即开始使用Microsoft Teams,并且与微软的产品组专家,以及来自两岸三 ...