[MATLAB] Dealing with high dimensional data in MATLAB

Ran across this problem when trying to simulate IPF–iterative proportional fitting for my STATS HW.

I was trying to construct a 7-dimensional matrix that represents clique potentials for 7 nodes. I found little resources on the web talking about dealing with high dimensional matrices in MATLAB (e.g. index specification, dimension expansion/reduction). So I just want to share some of the tricks/approaches we can use when having high dimensional (N>3) data in MATLAB.

I’m sure that there should be better solutions to address what I’m posting here, and any sharing and comment would be greatly appreciated.

Imagine we have a 2 by 2 by 2 by 2 by 2, a 5-dimensional matrix A, in MATLAB,


would return

2 2 2 2 2

It’s usually simple to think of or visualize 2 or 3 dimensional data; but it’d be hard to create a high dimensional data image in mind.

  • How to automate the process of extracting only the nth dimension from A?

If we have a 2D matrix:

B = [1,2;3,4]

would give us all the elements in the first dimension of B, in this case it’s

[1 2]

It’s not hard to think that for higher dimension that still works.


would give us all the elements in the first dimension of A. Then the problem comes when we want to automate this extraction process. How can we make this into a for loop? There is a rather complicated way to do this. It works, but I’m sure that there could be better solutions. Hope someone can point it out.

We first create a cell with length same as the matrix dimension. This cell would store the index string we are creating.

ind = cell{1,5}

Use a for loop to set all values to

for i = 1:5
  ind{i} = {[1]};

The brace and brackets are important here. Each element within the cell array is a cell. Then we set the dimension we want to address to have the character:

ind{dimension_addressed} = {':'};

The last step is to use this cell array to address the specific dimension we are referring to:


would be the correct way to automatically address the desired dimension in a high dimensional matrix in MATLAB.