weighted.mean: Weighted mean rotation

weighted.meanR Documentation

Weighted mean rotation

Description

Compute the weighted geometric or projected mean of a sample of rotations.

Usage

## S3 method for class 'SO3'
weighted.mean(
  x,
  w = NULL,
  type = "projected",
  epsilon = 1e-05,
  maxIter = 2000,
  ...
)

## S3 method for class 'Q4'
weighted.mean(
  x,
  w = NULL,
  type = "projected",
  epsilon = 1e-05,
  maxIter = 2000,
  ...
)

Arguments

x

n-by-p matrix where each row corresponds to a random rotation in matrix form (p=9) or quaternion (p=4) form.

w

vector of weights the same length as the number of rows in x giving the weights to use for elements of x. Default is NULL, which falls back to the usual mean function.

type

string indicating "projected" or "geometric" type mean estimator.

epsilon

stopping rule for the geometric method.

maxIter

maximum number of iterations allowed before returning most recent estimate.

...

only used for consistency with mean.default.

Details

This function takes a sample of 3D rotations (in matrix or quaternion form) and returns the weighted projected arithmetic mean S_P or geometric mean S_G according to the type option. For a sample of n rotations in matrix form Ri in SO(3), i=1,2,…,n, the weighted mean is defined as

argmin∑ wi d^2(Ri,S)

where d is the Riemannian or Euclidean distance. For more on the projected mean see moakher02 and for the geometric mean see manton04.

moakher02

Value

Weighted mean of the sample in the same parametrization.

See Also

median.SO3, mean.SO3, bayes.mean

Examples

Rs <- ruars(20, rvmises, kappa = 0.01)

# Find the equal-weight projected mean
mean(Rs)

# Use the rotation misorientation angle as weight
wt <- abs(1 / mis.angle(Rs))
weighted.mean(Rs, wt)

rot.dist(mean(Rs))

# Usually much smaller than unweighted mean
rot.dist(weighted.mean(Rs, wt))

# Can do the same thing with quaternions
Qs <- as.Q4(Rs)
mean(Qs)
wt <- abs(1 / mis.angle(Qs))
weighted.mean(Qs, wt)
rot.dist(mean(Qs))
rot.dist(weighted.mean(Qs, wt))

rotations documentation built on June 25, 2022, 1:06 a.m.