DIST

以弧度表示的角距离

描述

例子

距离=距离(quatA, quatB)返回四元数旋转操作符之间的角距离(以弧度为单位)夸塔quatB

例子

全部折叠

计算单个四元数与一个四元数向量的每个元素之间的四元数距离。使用欧拉角定义四元数。

q =四元数((0,0,0),“eulerd”,“zyx股票”,“帧”)
q =四元数1 + 0i + 0j + 0k
qArray =四元数([0,45岁,0,0,90,0;0180年,0,0,-90,0,0,-45,0],“eulerd”,“zyx股票”,“帧”)
qArray =5×1四元数的数组0.92388 + 0i + 0.38268j + 0k 0.70711 + 0i + 0.70711j + 0k 6.1232e-17 + 0i + 1j + 0k 0.70711 + 0i - 0.70711j + 0k 0.92388 + 0i - 0.38268j + 0k
quaternionDistance = rad2deg (dist (q, qArray))
quaternionDistance =5×145.0000 90.0000 180.0000 90.0000 45.0000

如果两个参数DIST为向量,计算对应元素之间的四元数距离。计算两个四元数向量之间的四元数距离。

angles1 = [30 0 15;30,5,15;30、10、15;30,15,15];angles2 = [30,6,15;31,11,15;30日,16日,14;30.5,21,15.5];qVector1 =四元数(angles1,“eulerd”,“zyx股票”,“帧”);qVector2 =四元数(angles2,“eulerd”,“zyx股票”,“帧”);rad2deg (dist (qVector1 qVector2))
ans =4×16.0000 6.0827 6.0827 6.0287

请注意,四元数表示的旋转与它的负值相同。计算四元数及其负数。

qPositive =四元数((30,-60),“eulerd”,“zyx股票”,“帧”)
qPositive =四元数0.72332 - 0.53198i + 0.20056j + 0.3919k
qNegative = -qPositive
qNegative =四元数-0.72332 + 0.53198i - 0.20056j - 0.3919k

寻找四元数及其负面之间的距离。

dist (qPositive qNegative)
ans = 0

一个四元数的分量可能看起来与它的负分量不同,但这两个表达式表示相同的旋转。

输入参数

全部折叠

四元数之间计算距离,指定为逗号分隔的四元或四元数的阵列。夸塔quatB必须有兼容的大小:

  • 大小(quatA) = =大小(quatB),或

  • 元素个数(quatA) = = 1,或

  • 元素个数(quatB) = = 1,或

  • 如果[Adim1,…, AdimN] =大小(quatA)[Bdim1,…, BdimN] =大小(quatB),然后i = 1: N,要么Adimi = = Bdimi要么ADIM == 1要么Bdim = = 1

    如果一个四元数参数只包含一个四元数,那么这个函数将返回该四元数与另一个参数中的每个四元数之间的距离。

数据类型:四元数

输出参数

全部折叠

以弧度表示的角距离,以数组形式返回。的并集的最大维数大小(quatA)大小(quatB)

数据类型:|

算法

DIST函数返回两个四元数旋转操作符之间的角距离。

四元数可以由一个轴来定义(ub,uc,ud)和旋转角度θ: = COS ( θ 2 ) + ( θ 2 ) ( u b + u c j + u d k )

给定形式中的四元数, = 一个 + b + c j + d k ,在那里一个实部可以求出来吗θ: θ = 2 COS 1 ( 一个 )

考虑两个四元数,p和产品 z = p * 共轭 ( ) 。在旋转算符中,z通过旋转p和derotates。如p接近,角度z趋于0,乘积接近单位四元数。

两个四元数之间的角距离可以表示为 θ z = 2 COS 1 ( 真实 ( z ) )

使用四元数数据类型语法,角距离计算为:

angularDistance = 2 * ACOS(部件(P *缀(Q)));

扩展功能

C / c++代码生成
生成使用MATLAB®编码器™C和C ++代码。

介绍了R2020a