Code covered by the BSD License  

Highlights from
Multiple matrix multiplications, with array expansion enabled

image thumbnail
from Multiple matrix multiplications, with array expansion enabled by Paolo de Leva
Multiplying matrices, vectors, or scalars contained in two N-D arrays, with array expansion enabled.

loc2loc(aP, gOa, gRa, gOb, gRb, dim)
function bP = loc2loc(aP, gOa, gRa, gOb, gRb, dim) 
%LOC2LOC  Transformation from a local reference frame to another.
%   bP = LOC2LOC(aP, gOa,gRa, gOb,GRb) is equivalent to
%   bP = LOC2LOC(aP, gOa,gRa, gOb,GRb, DIM), where DIM is the first
%   dimension of length 3 in arrays aP, gOa, gRa, gOb, GRb.
%
%   bP = LOC2LOC(aP, gOa,gRa, gOb,GRb, DIM) is an array of vector(s)
%   representing the position(s) of a point P in a local reference frame B,
%   computed by transforming the array of vectors aP. Arrays aP, bP, gOa,
%   and gOb must have the same size S. The size of gRa and gRb, if the
%   length of their dimension DIM + 1 is not considered, must be equal to
%   S. For instance, if aP is M-by-3 and DIM = 2, gRa must be M-by-3-by-3.
%
%   aP    Position(s) of point P in the local reference frame A.
%   gOa   Position(s) of the origin of A in the global reference frame G.
%   gRa   Orientation(s)            of A in the global reference frame G.
%   gOb   Position(s) of the origin of B in the global reference frame G.
%   gRb   Orientation(s)            of B in the global reference frame G.
%   DIM   The dimension along which positnion vectors are contained in 
%         arrays aP, bP, gOa, gOb.
%
%   Array     Dimensions (*)     Containing              Along dimension(s)
%   -----------------------------------------------------------------------
%   aP, bP         N             3-D position vectors           DIM
%   gOa, gOb       N             3-D position vectors           DIM
%   gRa, gRb     N + 1        3-by-3 orient. matrices       DIM and DIM + 1
%   -----------------------------------------------------------------------
%   (*) N is the number of dimensions in aP, bP, gOa, gOb. If they are
%       3-by-1 arrays, they are treated as 1-D arrays (N = 1 is assumed, 
%       DIM = 1 is required), and gRa and gRb must be single 3-by-3 
%       orientation matrices. 
%
%   Example:
%   This function is a simple application of MULTIPROD. See examples in 
%   MULTIPROD.
%
%   See also REFSYS, MULTIPROD, MULTITRANSP.

% $ Version: 1.0 $
% CODE      by:                 Paolo de Leva (IUSM, Rome, IT) 2005 Oct 8
% COMMENTS  by:                 Code author                    2005 Oct 8
% OUTPUT    tested by:          Code author                    2005 Oct 8
% -------------------------------------------------------------------------

% Transformation from G to B
bRg = multitransp(gRb, dim);
bOa  = multiprod(bRg, -gOb + gOa, [dim dim+1], dim); % Rotation

% Transformation from A to B
bRa = multiprod(bRg, gRa, [dim dim+1]); % Concatenating rotations
bP = bOa + multiprod(bRa, aP,  [dim dim+1], dim);

Contact us at files@mathworks.com