MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Table extraction

  • To: mathgroup at smc.vnet.net
  • Subject: [mg19208] Re: Table extraction
  • From: "Roberto Abraham" <abraham at ast.cam.ac.uk>
  • Date: Tue, 10 Aug 1999 02:52:58 -0400
  • References: <7odkbs$7mq@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

The dimensionality of your example is a little tricky, in that you've got a
data cube in your examples rather than 2-D arrays which is what I usually
work with, but stitching an array into another array is easy and I think
generalizes to higher dimension easily.

I think the syntax you are looking for is just something like:

xyvector[[Range[a,b],Range[b,c]]]

To then stitch this sub-array into another array is a little trickier. I've
written a function that sticks an array into another array at a given row
and column position that might generalize to what you want to do:

stitchIntoImage[big_, little_, r_, c_] :=
    Module[{i, j, nr, nc, bigIndices, littleIndices},
      nr = Dimensions[little][[1]];
      nc = Dimensions[little][[2]];
      bigIndices =
        Partition[
          Flatten[Table[{i, j}, {i, r, r + nr - 1}, {j, c, c + nc - 1}]],
2];
      littleIndices =
        Partition[Flatten[Table[{i, j}, {i, 1, nr}, {j, 1, nc}]], 2];
      ReplacePart[big, little, bigIndices, littleIndices]];


Appended below is an example of how to use this function to stick one array
into another array at a specified row and column position.

Best regards ---

Bob Abraham


(* Example of sticking one array in another array *)

bigImage = Table[Sin[i/10.] Cos[j/10.], {i, 1., 100}, {j, 1., 100}];

ListDensityPlot[bigImage, Mesh -> False];

ListDensityPlot[bigImage[[Range[20, 50], Range[40, 90]]],
    Mesh -> False,
    AspectRatio -> Automatic];

littleImage = Table[Cos[i/2.], {i, 1., 20}, {j, 1., 20}];

ListDensityPlot[littleImage,
  Mesh -> False]

ListDensityPlot[stitchIntoImage[bigImage, littleImage, 10, 10],
  Mesh -> False]



Maurice Shevalier <maurice at phas.ucalgary.ca> wrote in message
news:7odkbs$7mq at smc.vnet.net...
> Hi,
>
> I am trying to extract a section of a table with not much luck....
>
> I have defined two tables (actually two arrays which are used to plot
> vectors with ListPlotVectorField) as follows:
>
> xyvector = Table[{0.,0.},{j,1,64},{i,1,320}];
> backvector = Table[{0.,0.},{j,1,16},{i,1,100}];
>
> I need to extract part of xyvector and place it into  backvector. I have
> tried to use Part. I can extract the j range correctly (rows), but I
> can't get the Part function to extract in the i range (columns).
>
> I tried using Part[xyvector,{2,3}] which extracts 2 rows but I cannot
> figute out how to extract the necessary columns
>
> Can anyone help?
>
> Thanks,
>
> Maurice
>
> --
> Maurice Shevalier                 |       .~.
> Ph.D. Candidate                   |       /V\       L   I   N   U   X
> Dept. of Physics and Astronomy    |      // \\  >The Penguin, The Slayer?<
> University of Calgary             |     /(   )\
> Calgary, AB, CANADA T2N-1N4       |      ^^-^^
> (403)220-7873   fax:(403)284-0074 |
> e-mail: maurice at phas.ucalgary.ca
>
>
>
>




  • Prev by Date: RE: Mathematica loosing input focus all the time
  • Next by Date: Command for Stopping Notebook Evaluation?
  • Previous by thread: Re: Table extraction
  • Next by thread: Re: Table extraction