## How can I dynamically assign/access elements in a matrix with arbitrary dimensions?

### Erling Hugo Jensen (view profile)

on 15 Jan 2013
Latest activity Edited by Jan Simon

### Jan Simon (view profile)

on 15 Jul 2014

I am creating a code to manipulate a matrix generated from an external file. I would like to make it so that the matrix could have arbitrary dimensions, e.g. in one file it might be just one dimension so listing all the elements could be done like:

A(:)

in another, it might have two dimensions, so listing the elements could be done like:

A(:,:)

if three,

A(:,:,:)

and so on. My problem is that I don’t know how (or maybe it is not possible) to make some general code to manipulate the matrix A. If I had know that A had dimension 3, I could just do something like

A(n,m,o)

But what I would like to do is something like

A(C)

where C is a list equal to [n m o] or [n m o … z].

Any ideas?

~Jensen~

## Products

No products are associated with this question.

### Jan Simon (view profile)

on 15 Jan 2013
Edited by Jan Simon

### Jan Simon (view profile)

on 15 Jul 2014

Not matching the question exactly, but worth to mention:

A = rand(2,3,4)   % Or: rand(2,3,4,5,4,3,2)
Index    = cell(1, ndims(A));
Index(:) = {':'};  % BUGFIX: was {:}, thanks Walter and Jim
A(Index{:})        % Equivalent to: A(:, :, :)
Index{2} = 2:3;
A(Index{:});

Jim Hokanson

### Jim Hokanson (view profile)

on 17 Sep 2013

@Jan,

Thanks for the pointer on flags. Any other suggestion on how to mark something as needing to be fixed without having sufficient 'reputation' to fix it?
Jan Simon

### Jan Simon (view profile)

on 17 Sep 2013

But flags are used such rarely, that the forum does not suffer from a "misused" flag.

Matt

on 10 Jul 2014

Sharp! thanks