File Exchange

## Stacked Matrix Permutation

version 1.0.0.0 (2.02 KB) by Emanuele Ruffaldi

### Emanuele Ruffaldi (view profile)

Simplify the reordering of the sub-dimensions in a stacked matrices

Updated 10 Jun 2013

When a MATLAB matrix contains submatrices related to various factors it is sometime needed to reorder them along different factors.

E.g. we have a 2D matrix where rows are organized by 141 runs each made of 8 parts. Along the columns we have 21 microphones. A training algorithm requires to merge parts and microphone, needing a 2D matrix with the 141 runs in the rows, and both parts and microphones in the columns.

The initial layout can be expressed as: (parts runs) x (mics) where the terms in parenthesis are organized as in an inverse nested loops: for the rows we first iterate by runs and then by parts. That is from inner loop to outer loops in left to right. The target layout is instead: (runs) x (parts mics)

The general problem for 2D matrices is (A B C...) x (D E F...), and the resolution relies on the fact that MATLAB stores matrices in column order, that is we can use a single flat representation as (A B C D E F) with the same ordering from inner to outer.

This function is similar to permute but it manipulates the sub-dimensions defined inside rows or columns of a given matrix.

### Cite As

Emanuele Ruffaldi (2020). Stacked Matrix Permutation (https://www.mathworks.com/matlabcentral/fileexchange/42145-stacked-matrix-permutation), MATLAB Central File Exchange. Retrieved .