From help-request at octave dot org Sun Feb 13 11:20:47 2005 Subject: Re: Select elements according to the index From: "Henry F. Mollet" To: Todd Neal , "Chen, Minyu" CC: Octave_post Date: Sun, 13 Feb 2005 09:29:32 -0800 octave:24> a=[1 2 3; 4 5 6] a = 1 2 3 4 5 6 octave:25> b=[.1 .2 .3 .4 .5 .6 .7 .8] b = 0.10000 0.20000 0.30000 0.40000 0.50000 0.60000 0.70000 0.80000 octave:26> c=b(a) c = 0.10000 0.20000 0.30000 0.40000 0.50000 0.60000 Works on GNU Octave, version 2.1.46 (powerpc-apple-darwin6.6). Henry > > What version of Octave are you using ? This is from 2.1.64 Debian Testing. > > octave:1> a=[1 2 3; 4 5 6]; > octave:2> b=[.1 .2 .3 .4 .5 .6 .7 .8]; > octave:3> c=b(a) > c = > > 0.10000 0.20000 0.30000 > 0.40000 0.50000 0.60000 > > > Todd > on 2/13/05 8:04 AM, Todd Neal at tolchz at gmail dot com wrote: > On Sun, 13 Feb 2005 13:32:25 -0000, Chen, Minyu wrote: > ... >> Suppose I have an index matrix of 2 by 3, e.g. a=[1 2 3; 4 5 6] >> >> And have a vector of 1 by 8, e.g. b=[.1 .2 .3 .4 .5 .6 .7 .8] >> >> And I want to create a matrix c of 2 by 3 (the same dimension of a), >> with c(i,j)=b(a(i,j)), that's being said: >> >> c=[.1 .2 .3; .4 .5 .6] >> >> In matlab, as memory serves correctly, I can do it by typing: >> >> c=b(a) >> >> but this command in Octave will generate only a vector of 1 by 6: >> >> c=[.1 .4 .2 .5 .3 .6] >> >> How can I get the matrix I want? >> >> Many Thanks, >> Minyu Chen > > ------------------------------------------------------------- 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 -------------------------------------------------------------