matlab练习程序(旋转矩阵、欧拉角、四元数互转)
欧拉角转旋转矩阵公式:

旋转矩阵转欧拉角公式:

旋转矩阵转四元数公式,其中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练习程序(旋转矩阵、欧拉角、四元数互转)的更多相关文章
- matlab练习程序(求向量间的旋转矩阵与四元数)
问题是这样,如果我们知道两个向量v1和v2,计算从v1转到v2的旋转矩阵和四元数,由于旋转矩阵和四元数可以互转,所以我们先计算四元数. 我们可以认为v1绕着向量u旋转θ角度到v2,u垂直于v1-v2 ...
- matlab练习程序(SUSAN检测)
matlab练习程序(SUSAN检测) SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny.不过思想还是有点意思的. 主要思想就是:首先做一个和原图像 ...
- (转)matlab练习程序(HOG方向梯度直方图)
matlab练习程序(HOG方向梯度直方图)http://www.cnblogs.com/tiandsp/archive/2013/05/24/3097503.html HOG(Histogram o ...
- matlab练习程序(对应点集配准的四元数法)
这个算是ICP算法中的一个关键步骤,单独拿出来看一下. 算法流程如下: 1.首先得到同名点集P和X. 2.计算P和X的均值up和ux. 3.由P和X构造协方差矩阵sigma. 4.由协方差矩阵sigm ...
- matlab示例程序--Motion-Based Multiple Object Tracking--卡尔曼多目标跟踪程序--解读
静止背景下的卡尔曼多目标跟踪 最近学习了一下多目标跟踪,看了看MathWorks的关于Motion-Based Multiple Object Tracking的Documention. 官网链接:h ...
- matlab练习程序(透视投影,把lena贴到billboard上)
本练习程序是受到了这个老外博文的启发,感觉挺有意思,就尝试了一下.他用的是opencv,我这里用的是matlab. 过去写过透视投影,当时是用来做倾斜校正的,这次同样用到了透视投影,不过更有意思,是将 ...
- matlab练习程序(多圆交点)
最近总是对计算几何方面的程序比较感兴趣. 多圆求交点,要先对圆两两求交点. 有交点的圆分为相切圆和相交圆. 相切圆求法: 1.根据两圆心求直线 2.求公共弦直线方程 3.求两直线交点即两圆切点. 相交 ...
- matlab练习程序(矩形变换为单连通形状)
变换使用的模板必须是单连通的,而且模板中心必须在模板内,如果在模板中打个结或是月牙形,这里的程序就处理不了了. 虽然非单连通模板也有办法处理,不过不是这里要讨论的. 这里用到的方法和矩形变换为圆那片文 ...
- matlab练习程序(渲染三原色)
这里我用的空间是x向右为正,y向下为正,z向屏幕里面为正.相当于标准右手系绕x轴旋转了180度. 将三个点光源放在 r = [0.3,0,0.5];g = [0.3,-0.5*cos(pi/6),-0 ...
随机推荐
- vue-manage-system 后台管理系统开发总结
前言 vue-manage-system,一个基于 Vue.js 和 element-ui 的后台管理系统模板,从2016年年底第一个commit,到现在差不多两年了,GitHub上也有了 5k st ...
- 有关 Azure 机器学习的 Net# 神经网络规范语言的指南
Net# 是由 Microsoft 开发的一种用于定义神经网络体系结构的语言. 使用 Net# 定义神经网络的结构使定义复杂结构(如深层神经网络或任意维度的卷积)变得可能,这些复杂结构被认为可提高对数 ...
- Oracle性能优化之查询语句通用原则
作者早期文章 Oracle优化 索引是表的一个概念部分 , 用来提高检索数据的效率, ORACLE 使用了一个复杂的自平衡 B-tree 结构 . 通常 , 通过索引查询数据比全表扫描要快 . 当 O ...
- 【整理】WDK 和 DDK异同
WDK和DDK的作用 开发WINDOWS下的驱动程序,需要一个专门的开发包,如:开发JAVA程序,我们可能需要一个JDK,开发 WINDOWS应用程序,我们需要WINDOWS的SDK,现在开发WIND ...
- Docker介绍及常用操作演示(一)--技术流ken
Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互 ...
- Jenkins持续集成介绍及插件安装版本更新演示(一)--技术流ken
Jenkins介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins功能包括: ...
- vue 路由 及 跳转传递参数的总结
博客地址:https://ainyi.com/4 vue-router vue-router 是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用.vue的单页面应用是基 ...
- [转]GitLab Continuous Integration (GitLab CI/CD)
本文转自:https://docs.gitlab.com/ee/ci/README.html GitLab Continuous Integration (GitLab CI/CD) The bene ...
- element-ui el-input只显示下划线
只需要增加样式 .el-input__inner { width: 220px; border-top-width: 0px; border-left-width: 0px; border-right ...
- ASP.NET MVC 学习笔记-7.自定义配置信息(后续)
自定义配置信息的高级应用 通过上篇博文对简单的自定义配置信息的学习,使得更加灵活的控制系统配置信息.实际项目中,这种配置的灵活度往往无法满足项目的灵活度和扩展性. 比如,一个配置信息有三部分组成,而每 ...