Home > manopt > tools > multitransp_legacy.m

# multitransp_legacy

## PURPOSE

Transposing arrays of matrices.

## SYNOPSIS

function b = multitransp_legacy(a, dim)

## DESCRIPTION

``` Transposing arrays of matrices.

THIS ORIGINAL MULTITRANSP IS NOW CALLED MULTITRANSP_LEGACY IN MANOPT

B = MULTITRANSP(A) is equivalent to B = MULTITRANSP(A, DIM), where
DIM = 1.

B = MULTITRANSP(A, DIM) is equivalent to
B = PERMUTE(A, [1:DIM-1, DIM+1, DIM, DIM+2:NDIMS(A)]), where A is an
array containing N P-by-Q matrices along its dimensions DIM and DIM+1,
and B is an array containing the Q-by-P transpose (.') of those N
matrices along the same dimensions. N = NUMEL(A) / (P*Q), i.e. N is
equal to the number of elements in A divided by the number of elements
in each matrix.

MULTITRANSP, PERMUTE and IPERMUTE are a generalization of TRANSPOSE
(.') for N-D arrays.

Example:
A 5-by-9-by-3-by-2 array may be considered to be a block array
containing ten 9-by-3 matrices along dimensions 2 and 3. In this
case, its size is so indicated:  5-by-(9-by-3)-by-2 or 5x(9x3)x2.
If A is ................ a 5x(9x3)x2 array of 9x3 matrices,
C = MULTITRANSP(A, 2) is a 5x(3x9)x2 array of 3x9 matrices.

## CROSS-REFERENCE INFORMATION

This function calls:
This function is called by:
• multihconj_legacy MULTIHCONJ Hermitian conjugating arrays of matrices.
• multitransp Transpose the matrix slices of an N-D array (no complex conjugate)

## SOURCE CODE

```0001 function b = multitransp_legacy(a, dim)
0002 % Transposing arrays of matrices.
0003 %
0004 %    THIS ORIGINAL MULTITRANSP IS NOW CALLED MULTITRANSP_LEGACY IN MANOPT
0005 %
0006 %    B = MULTITRANSP(A) is equivalent to B = MULTITRANSP(A, DIM), where
0007 %    DIM = 1.
0008 %
0009 %    B = MULTITRANSP(A, DIM) is equivalent to
0010 %    B = PERMUTE(A, [1:DIM-1, DIM+1, DIM, DIM+2:NDIMS(A)]), where A is an
0011 %    array containing N P-by-Q matrices along its dimensions DIM and DIM+1,
0012 %    and B is an array containing the Q-by-P transpose (.') of those N
0013 %    matrices along the same dimensions. N = NUMEL(A) / (P*Q), i.e. N is
0014 %    equal to the number of elements in A divided by the number of elements
0015 %    in each matrix.
0016 %
0017 %    MULTITRANSP, PERMUTE and IPERMUTE are a generalization of TRANSPOSE
0018 %    (.') for N-D arrays.
0019 %
0020 %    Example:
0021 %       A 5-by-9-by-3-by-2 array may be considered to be a block array
0022 %       containing ten 9-by-3 matrices along dimensions 2 and 3. In this
0023 %       case, its size is so indicated:  5-by-(9-by-3)-by-2 or 5x(9x3)x2.
0024 %       If A is ................ a 5x(9x3)x2 array of 9x3 matrices,
0025 %       C = MULTITRANSP(A, 2) is a 5x(3x9)x2 array of 3x9 matrices.
0026 %
0028
0029 % \$ Version: 1.0 \$
0030 % CODE      by:                 Paolo de Leva (IUSM, Rome, IT) 2005 Sep 9
0031 % COMMENTS  by:                 Code author                    2006 Nov 21
0032 % OUTPUT    tested by:          Code author                    2005 Sep 13
0033 % -------------------------------------------------------------------------
0034
0035 % Setting DIM if not supplied.
0036 if nargin == 1, dim = 1; end
0037
0038 % Transposing
0039 order = [1:dim-1, dim+1, dim, dim+2:ndims(a)];
0040 b = permute(a, order);
0041
0042 end```

Generated on Fri 30-Sep-2022 13:18:25 by m2html © 2005