文档帮助中心
转换四元数旋转矩阵
rotationMatrix = rotmat(皮疹、rotationType)
例子
rotationMatrix= rotmat (皮疹,rotationType)将四元数,皮疹,转换为等效的旋转矩阵表示。
rotationMatrix= rotmat (皮疹,rotationType)
rotationMatrix
皮疹
rotationType
全部折叠
定义用于点旋转的四元数。
θ= 45;γ= 30;皮疹=四元数([0,θ,γ],“eulerd”,“ZYX股票”,“点”)
皮疹=四元数0.8924 + 0.23912i + 0.36964j + 0.099046k
将四元数转换为旋转矩阵。
rotationMatrix = rotmat(季,“点”)
rotationMatrix =3×30.7071 -0.0000 0.7071 0.3536 0.8660 -0.3536 -0.6124 0.5000 0.6124
要验证旋转矩阵,直接创建两个旋转矩阵对应于关于的旋转y- 和x相互重合。将旋转矩阵相乘并与输出进行比较rotmat。
rotmat
θ= 45;γ= 30;ry = [cosd() 0 sind();…0 1 0;…信德(θ)0 cosd(θ)];rx = [1 0 0;…0 cosd(gamma) -sind(gamma);…0信德(γ)cosd(γ)];rotationMatrixVerification = rx *
rotationMatrixVerification =3×30.7071 0 0.7071 0.3536 0.8660 -0.3536 -0.6124 0.5000 0.6124
定义的框架旋转使用四元数。
θ= 45;γ= 30;皮疹=四元数([0,θ,γ],“eulerd”,“ZYX股票”,“帧”)
皮疹=四元数0.8924 + 0.23912i + 0.36964j - 0.099046k
rotationMatrix = rotmat(季,“帧”)
rotationMatrix =3×30.7071 -0.0000 -0.7071 0.3536 0.8660 0.3536 0.6124 -0.5000 0.6124
θ= 45;γ= 30;ry = [cosd() 0 -sind();…0 1 0;…信德(THETA)0 COSD(THETA)];rx = [1 0 0;…0 COSD(伽马)信德(伽马);…0 -sind(伽马)COSD(伽马)];rotationMatrixVerification = rx *
rotationMatrixVerification =3×30.7071 0 -0.7071 0.3536 0.8660 0.3536 0.6124 -0.5000 0.6124
创建一个3×1归一化的四元数矢量。
qVec =正常化(四元数(randn (3、4)));
将四元数数组转换为旋转矩阵。的页面rotmatArray的线性指标qVec。
rotmatArray
qVec
rotmatArray = rotmat (qVec,“帧”);
假设qVec和rotmatArray对应于一系列的旋转。将四元数旋转组合成单个表示,然后将四元数旋转应用于任意初始化的笛卡尔坐标点。
loc =正常化(randn (1、3));皮疹= prod (qVec);rotateframe(皮疹、loc)
ans =1×30.9524 0.5297 0.9013
将旋转矩阵合并成一个单一的表示法,然后将旋转矩阵应用于相同的初始笛卡尔坐标点。验证四元数旋转和旋转矩阵的结果具有相同的方向。
totalRotMat =眼(3);为i = 1:size(rotmatArray,3) totalRotMat = rotmatArray(:,:,i)*totalRotMat;结束totalRotMat * loc”
ans =3×10.9524 0.5297 0.9013
四元数转换,指定为标量、向量、矩阵或多维数组。
数据类型:四元数
四元数
“帧”
“点”
旋转的类型来表示由rotationMatrix输出指定为“帧”要么“点”。
数据类型:烧焦|字符串
烧焦
字符串
旋转矩阵表示,以3×3矩阵或3×3×-的形式返回N多维数组。
如果皮疹是一个标量,rotationMatrix返回为一个3×3矩阵。
如果皮疹是非标量,rotationMatrix是3乘3乘-N多维数组,rotationMatrix(:,:,我)是对应于旋转矩阵皮疹(我)。
rotationMatrix(:,:,我)
皮疹(我)
旋转矩阵的数据类型与的基础数据类型相同皮疹。
数据类型:单|双
单
双
给定一个四元数的形式
问 = 一个 + b 我 + c j + d k ,
定义了帧旋转的等效旋转矩阵为
( 2 一个 2 − 1 + 2 b 2 2 b c + 2 一个 d 2 b d − 2 一个 c 2 b c − 2 一个 d 2 一个 2 − 1 + 2 c 2 2 c d + 2 一个 b 2 b d + 2 一个 c 2 c d − 2 一个 b 2 一个 2 − 1 + 2 d 2 ] 。
对于旋转点的等效旋转矩阵是帧旋转矩阵的转置:
( 2 一个 2 − 1 + 2 b 2 2 b c − 2 一个 d 2 b d + 2 一个 c 2 b c + 2 一个 d 2 一个 2 − 1 + 2 c 2 2 c d − 2 一个 b 2 b d − 2 一个 c 2 c d + 2 一个 b 2 一个 2 − 1 + 2 d 2 ] 。
[1] Kuipers, Jack B。四元数和旋转序列:轨道,航空航天和虚拟现实的应用入门。普林斯顿,新泽西州:普林斯顿大学出版社,2007年。
欧拉
eulerd
rotvec
rotvecd
您的系统中存在此示例的修改版本。你想打开这个版本吗?
你点击了一个链接,对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入该命令来运行它。Web浏览器不支持MATLAB命令。金宝app
选择一个网站来获取可用的翻译内容,并查看本地事件和报价。根据你的位置,我们建议你选择:。
您还可以选择从下面的列表中的网站:
选择中国网站(中文或英文),以获得最佳的网站表现。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系你当地的办公室