Custom coordinates into an array

2 views (last 30 days)
Matthieu
Matthieu on 10 Oct 2013
Commented: Matthieu on 10 Oct 2013
Hi,
This problem is getting me really crazy right now.
I'm trying to figure a way to make this work elegantly.
A is a N x N x N x...x N array (N is repeated M times).
N and M are integers greater than 2.
Assume a given i in {1,...,M} and a given j in {1,...N}.
I'm looking for a way to design a function that will receive A,N,M,i,j and will return
A(:,:,...,:,j,:...,:)
where j is at the i-th coordinate.
I.E. all elements who have j as their i-th coordinate, stored into a Nx...xN (M-1 times) array.
I have spent hours trying to find an elegant way to do this.
and still haven't found a lot in matlab's doc (sub2ind might come in handy eventually)
I also tried to design ':,...,:,j,:,...:' as a string and tried to pass it as an argument to A() but it does not seem to work.
I'm a bit stuck in here and I could really use a tip on this !
Thank you for your time !
M

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 10 Oct 2013
ii = repmat({':'},1,M);
ii(i) = {j};
out = A(ii{:});
  1 Comment
Matthieu
Matthieu on 10 Oct 2013
Good job. Works perfectly fine. First time I hear about this repmat function. Could have saved me from a lot of trouble in previous codes. Thanks !

Sign in to comment.

More Answers (0)

Categories

Find more on Matrices and Arrays 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!