reading different locations of a matrix specified by indices list
- To: mathgroup at smc.vnet.net
- Subject: [mg113866] reading different locations of a matrix specified by indices list
- From: "Nasser M. Abbasi" <nma at 12000.org>
- Date: Tue, 16 Nov 2010 05:06:11 -0500 (EST)
- Reply-to: nma at 12000.org
Given a matrix A, and list of locations withing the matrix, where each location is given by {i,j} entry, I wanted to find the most efficient and clear way to obtain the entries in the matrix by these locations. I wanted to ask the experts here what they think of this method, and if they can suggest a better way. Example, given A={{1,2,3}, {4,5,6}, {7,8,9}} and wanted to obtain the entries at say {1,1} and {3,3}, which will be 1 and 9 in this example. So I first made a list of the locations : pos={ {1,1},{3,3}}; Then typed Map[ A[[Sequence@@ # ]] & , pos ] and got back {1,9} So, this seems to work. Any suggestion of may be of a more 'obvious' or better way? fyi, in another system, I do the above as follows (just for comparison) ---------------------- A=[1 2 3; 4 5 6; 7 8 9]; I=[1 3]; % setup the I,J indices J=[1 3]; A(sub2ind(size(A),I,J)) ans = 1 9 ---------------------- I am happy with the Mathematica method, once I figure out how to do it, the trick for me was to think functional :) Both ways in both systems are about the same order of complexity and length. --Nasser