Returns a manifold structure to optimize over the special Euclidean group function M = specialeuclideanfactory(n) function M = specialeuclideanfactory(n, k) The special Euclidean group (the manifold of rigid transformations): This is a product manifold of the rotations group SO(n) and the translation group R^n, copied k times. Points on the manifold are represented as structures X with two fields. X.R is a 3D array of size nxnxk such that each slice X.R(:, :, i) corresponds to a rotation matrix (orthogonal with determinant 1). X.t is a matrix of size nxk such that each column X.t(:, i) corresponds to a translation vector. Tangent vectors are represented as structures with the same fields. Note that rotational components of the tangent vectors are represented in the Lie algebra, i.e., each slice Xdot.R(:, :, i) is a skew-symmetric matrix. Use M.tangent2ambient(X, Xdot) to obtain a representation in the ambient space. This is often necessary when defining problem.ehess(X, Xdot). This is a description of SE(n)^k with the induced metric from the embedding space (R^nxn)^k x (R^n)^k, i.e., this manifold is a Riemannian submanifold of the embedding Euclidean space with the usual inner product. By default, k = 1. This is a test geometry: it may not be the "appropriate" geometry to give to SE(n). See rotationsfactory and euclideanfactory for details. See also: rotationsfactory euclideanfactory

- euclideanfactory Returns a manifold struct to optimize over m-by-n matrices.
- rotationsfactory Returns a manifold structure to optimize over rotation matrices.
- productmanifold Returns a structure describing a product manifold M = M1 x M2 x ... x Mn.

0001 function M = specialeuclideanfactory(n, k) 0002 % Returns a manifold structure to optimize over the special Euclidean group 0003 % 0004 % function M = specialeuclideanfactory(n) 0005 % function M = specialeuclideanfactory(n, k) 0006 % 0007 % The special Euclidean group (the manifold of rigid transformations): 0008 % This is a product manifold of the rotations group SO(n) and the 0009 % translation group R^n, copied k times. 0010 % 0011 % Points on the manifold are represented as structures X with two fields. 0012 % X.R is a 3D array of size nxnxk such that each slice X.R(:, :, i) 0013 % corresponds to a rotation matrix (orthogonal with determinant 1). 0014 % X.t is a matrix of size nxk such that each column X.t(:, i) corresponds 0015 % to a translation vector. 0016 % 0017 % Tangent vectors are represented as structures with the same fields. Note 0018 % that rotational components of the tangent vectors are represented in the 0019 % Lie algebra, i.e., each slice Xdot.R(:, :, i) is a skew-symmetric matrix. 0020 % Use M.tangent2ambient(X, Xdot) to obtain a representation in the ambient 0021 % space. This is often necessary when defining problem.ehess(X, Xdot). 0022 % 0023 % This is a description of SE(n)^k with the induced metric from the 0024 % embedding space (R^nxn)^k x (R^n)^k, i.e., this manifold is a Riemannian 0025 % submanifold of the embedding Euclidean space with the usual inner 0026 % product. 0027 % 0028 % By default, k = 1. 0029 % 0030 % This is a test geometry: it may not be the "appropriate" geometry to give 0031 % to SE(n). 0032 % 0033 % See rotationsfactory and euclideanfactory for details. 0034 % 0035 % See also: rotationsfactory euclideanfactory 0036 0037 % This file is part of Manopt: www.manopt.org. 0038 % Original author: Nicolas Boumal, Sep. 23, 2014. 0039 % Contributors: 0040 % Change log: 0041 0042 0043 if ~exist('k', 'var') || isempty(k) 0044 k = 1; 0045 end 0046 0047 elements = struct(); 0048 elements.R = rotationsfactory(n, k); 0049 elements.t = euclideanfactory(n, k); 0050 0051 M = productmanifold(elements); 0052 0053 end

Generated on Sat 12-Nov-2016 14:11:22 by