How can I dynamically assign/access elements in a matrix with arbitrary dimensions?
11 views (last 30 days)
Show older comments
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~
0 Comments
Answers (1)
Jan
on 15 Jan 2013
Edited: Jan
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{:});
6 Comments
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!