# Re: Assignment, Form 5 (what they didn't tell you in the manuals)

• Subject: Re: Assignment, Form 5 (what they didn't tell you in the manuals)
• From: steinhh(at)ulrik.uio.no (Stein Vidar Hagfors Haugan)
• Date: 19 Nov 1998 11:37:45 GMT
• In-reply-to: David Ritscher's message of Wed, 18 Nov 1998 15:51:13 -0600
• Newsgroups: comp.lang.idl-pvwave
• Organization: University of Oslo, Norway
• References: <36534151.3A3E@bigfoot.com>
• Xref: news.doit.wisc.edu comp.lang.idl-pvwave:12866

```

In article <36534151.3A3E@bigfoot.com> David Ritscher
<davidNO.ritscherSPAM@bigfoot.com> writes:

> Today's matrix subscripting puzzler:
> I'm noting that there are some extra rules govorning assignement
> statements where the right side contains subscripting expressions in
> more than one of the dimensions of a matrix.  Given a 3-D array,
> array(indgen(5), indgen(5), indgen(5)) yields a 5-element vector
> array(indgen(5), 0, indgen(5)) yields a 5 x 1 x 5 matrix
>
> I'm trying to create an index that allows me to extract vectors of
> information from a matrix that has been stored.  Here is a simple
> example of the form of what I'm trying to extract.  The matrix 'index'
> will put the matrix into the order I want.
>
> threeD = indgen(3,4,5)
> twoD = indgen(3,5)
> index = [[indgen(15) mod 3], [indgen(15) / 3]]
[..]

I'm not 100% sure I understand exactly what you want, so let me
data is lindgen(m,n,o). You rearrange your 2d data into a vector
according to the one-dimensional index value, and you want to
arrange corresponding 2d slices (*,j,*) of your 3d data into
vectors, and stack them into an array that's lonarr(m*o,n) ?

Isn't this best solved with TRANSPOSE (which has gotten some
new functionality since I learned it):

out = reform(transpose(threed,[0,2,1]),m*o,n)

?

As I said, I may have misunderstood your question, but if I
haven't, I believe this is the answer...

Stein Vidar

```