Path: news.mathworks.com!not-for-mail From: <HIDDEN> Newsgroups: comp.soft-sys.matlab Subject: multi-dimensional indexing Date: Fri, 3 Feb 2012 16:09:29 +0000 (UTC) Organization: Technische Universiteit Delft Lines: 18 Message-ID: <jgh0rp$po9$1@newscl01ah.mathworks.com> Reply-To: <HIDDEN> NNTP-Posting-Host: www-05-blr.mathworks.com Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: newscl01ah.mathworks.com 1328285369 26377 172.30.248.37 (3 Feb 2012 16:09:29 GMT) X-Complaints-To: news@mathworks.com NNTP-Posting-Date: Fri, 3 Feb 2012 16:09:29 +0000 (UTC) X-Newsreader: MATLAB Central Newsreader 2295120 Xref: news.mathworks.com comp.soft-sys.matlab:756653 Is it possible to use a matrix as subscripts for a multi-dimensional array? What I want is the following: I have a n-D array, say 'A', and a n-by-1 vector, say 'ind', containing the subscripts for each dimension. I want to be able to use A(ind) and get as output A(ind(1),ind(2),...,ind(n)). Is there an elegant way to do this? (preferably without knowing n in advance) The best I've come with so far, is the following: temp = num2cell(ind); %convert the vector to a cell A(temp{:}) %this command somehow gives the contents of each cell as subscripts. (this seems to be undocumented matlab behavior, but it is pretty neat though) I would like to get rid of the intermediate step, since it involves creating extra variables I don't need. Thanks in advance! Kind regards, Roel Helsen (by the way, the same trick can be used to group multiple outputs of functions. i.e. temp = cell(n,1); [temp{:}] = ndgrid(1:10); %this creates an n-dimensional grid with 10 elements in each dimension)