From help-request at octave dot org Wed Jun 16 13:05:05 2004 Subject: Re: no way for simple matrix lookup ? From: Etienne Grossmann To: "D. Goel" Cc: help at octave dot org, maintainers@octave.org, etienne@cs.uky.edu Date: Wed, 16 Jun 2004 13:57:19 -0400 A = reshape (1:12, 3,4); b = [2 3 1 2 3]; c = [4 1 2 3 4]; D = A(sub2ind (size (A),b, c)) D = diag (A(b,c)) # Don't do that On Wed, Jun 16, 2004 at 10:56:17AM -0400, D. Goel wrote: # Hi # # [1] Suppose A is a nxn matrix. And b and are vectors. How do i # return elements of A specified by b and c? # # i.e. Want to return a vector D, such that # D(i) = A(b(i), c(i)) # # Is the only way to do that a for loop? Is that inefficient? # # This "simple lookup" seems too fundamental that there should be a way # to do it. Am I missing something? Else, should this be a feature # request? # # [2] if (1) above is not possible, is it possible if b = c ? # # [3] More generally, the problem i am struggling with is: # # A is a nxmxl matrix. b and c are vectors. # I am looking for a vector D, such that D(i,:)= A(b(i), :, c(i)). # # Any way to do that? # # [4] A simple generalization of (1) to 3 D's possible? # # D(i)=A(b(i), c(i), d(i)) ? # # # [5] BTW, i might be able to do (2) using the diag function, but is # there a way to use diag for 3 Dimensions? or use diag such that it # acts only on 2 of the indices? So one can implement (3), which is my # actual problem? # # # [6] Is there a way to transpose the 2nd and 3rd indices of a 3D # vector? transpose() complains that it is implemented only for # 2D's... I am trying 2.1.57. # # # # Thanks, please CC if you can.. # DG http://gnufans.net/ # -- # # # # ------------------------------------------------------------- # Octave is freely available under the terms of the GNU GPL. # # Octave's home on the web: http://www.octave.org # How to fund new projects: http://www.octave.org/funding.html # Subscription information: http://www.octave.org/archive.html # ------------------------------------------------------------- # -- Etienne Grossmann ------ http://www.cs.uky.edu/~etienne ------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.octave.org How to fund new projects: http://www.octave.org/funding.html Subscription information: http://www.octave.org/archive.html -------------------------------------------------------------