Re: create a list with x,y,z coordinates
- To: mathgroup at smc.vnet.net
- Subject: [mg81571] Re: create a list with x,y,z coordinates
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Fri, 28 Sep 2007 02:07:45 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <fdf2ol$2i7$1@smc.vnet.net>
Claus wrote: > I have a list of z-values: > > zVals={13, 8, 15, 9, 15, 8, 11, 2, 18, 8, 5, 10, 11, 10, 9, 14, 6, 23, > 6, 14, 16, 5, 10, 5, 18, 10, 11, 10, 15, 8, 6, 23, 6, 17, 6, 12, 9, 17, > 4, 8, 18, 4, 18, 9, 13, 9, 14, 6, 10, 6, 5, 13, 5, 10, 6, 19, 8, 17, 9, > 16, 15, 5, 13, 5, 11, 9, 16, 2, 21, 11, 4, 15, 7, 10, 7, 16, 10, 14, 7, > 18, 17, 8, 15, 11, 14, 5, 14, 4, 13, 6, 8, 16, 8, 22, 8, 6, 9, 13, 5, 12} > > These z-values are at grid points in a regularly spaced mesh, indices i > and j correspond to coordinates x and y, respectively. I can create the > mesh by > > Table[{i,j},{i,0.05,1,0.1},{j,0.05,1,0.1}] > > What is the best way in mathematica to "append" the z-values to the > (x,y)values? > I know that they are in order corresponding to the (x,y)values; that is > 13 corresponds to (0.05,0.05) and 12 corresponds to (0.95,0.95). One way of doing this is to use *Riffle* and *Partition* (the function called unflatten has been taken from the online help). In[1]:= zVals = {13, 8, 15, 9, 15, 8, 11, 2, 18, 8, 5, 10, 11, 10, 9, 14, 6, 23, 6, 14, 16, 5, 10, 5, 18, 10, 11, 10, 15, 8, 6, 23, 6, 17, 6, 12, 9, 17, 4, 8, 18, 4, 18, 9, 13, 9, 14, 6, 10, 6, 5, 13, 5, 10, 6, 19, 8, 17, 9, 16, 15, 5, 13, 5, 11, 9, 16, 2, 21, 11, 4, 15, 7, 10, 7, 16, 10, 14, 7, 18, 17, 8, 15, 11, 14, 5, 14, 4, 13, 6, 8, 16, 8, 22, 8, 6, 9, 13, 5, 12}; xyVals = Table[{i, j}, {i, 0.05, 1, 0.1}, {j, 0.05, 1, 0.1}]; unflatten[e_, {d__?((IntegerQ[#] && Positive[#]) &)}] := Fold[Partition, e, Take[{d}, {-1, 2, -1}]] /; (Length[e] === Times[d]) unflatten[Riffle[Flatten@xyVals, zVals, {3, -1, 3}], {10, 10, 3}] Out[4]= {{{0.05, 0.05, 13}, {0.05, 0.15, 8}, {0.05, 0.25, 15}, {0.05, 0.35, 9}, {0.05, 0.45, 15}, {0.05, 0.55, 8}, {0.05, 0.65, 11}, {0.05, 0.75, 2}, {0.05, 0.85, 18}, {0.05, 0.95, 8}}, {{0.15, 0.05, 5}, {0.15, 0.15, 10}, {0.15, 0.25, 11}, {0.15, 0.35, 10}, {0.15, 0.45, 9}, {0.15, 0.55, 14}, {0.15, 0.65, 6}, {0.15, 0.75, 23}, {0.15, 0.85, 6}, {0.15, 0.95, 14}}, {{0.25, 0.05, 16}, {0.25, 0.15, 5}, {0.25, 0.25, 10}, {0.25, 0.35, 5}, {0.25, 0.45, 18}, {0.25, 0.55, 10}, {0.25, 0.65, 11}, {0.25, 0.75, 10}, {0.25, 0.85, 15}, {0.25, 0.95, 8}}, {{0.35, 0.05, 6}, {0.35, 0.15, 23}, {0.35, 0.25, 6}, {0.35, 0.35, 17}, {0.35, 0.45, 6}, {0.35, 0.55, 12}, {0.35, 0.65, 9}, {0.35, 0.75, 17}, {0.35, 0.85, 4}, {0.35, 0.95, 8}}, {{0.45, 0.05, 18}, {0.45, 0.15, 4}, {0.45, 0.25, 18}, {0.45, 0.35, 9}, {0.45, 0.45, 13}, {0.45, 0.55, 9}, {0.45, 0.65, 14}, {0.45, 0.75, 6}, {0.45, 0.85, 10}, {0.45, 0.95, 6}}, {{0.55, 0.05, 5}, {0.55, 0.15, 13}, {0.55, 0.25, 5}, {0.55, 0.35, 10}, {0.55, 0.45, 6}, {0.55, 0.55, 19}, {0.55, 0.65, 8}, {0.55, 0.75, 17}, {0.55, 0.85, 9}, {0.55, 0.95, 16}}, {{0.65, 0.05, 15}, {0.65, 0.15, 5}, {0.65, 0.25, 13}, {0.65, 0.35, 5}, {0.65, 0.45, 11}, {0.65, 0.55, 9}, {0.65, 0.65, 16}, {0.65, 0.75, 2}, {0.65, 0.85, 21}, {0.65, 0.95, 11}}, {{0.75, 0.05, 4}, {0.75, 0.15, 15}, {0.75, 0.25, 7}, {0.75, 0.35, 10}, {0.75, 0.45, 7}, {0.75, 0.55, 16}, {0.75, 0.65, 10}, {0.75, 0.75, 14}, {0.75, 0.85, 7}, {0.75, 0.95, 18}}, {{0.85, 0.05, 17}, {0.85, 0.15, 8}, {0.85, 0.25, 15}, {0.85, 0.35, 11}, {0.85, 0.45, 14}, {0.85, 0.55, 5}, {0.85, 0.65, 14}, {0.85, 0.75, 4}, {0.85, 0.85, 13}, {0.85, 0.95, 6}}, {{0.95, 0.05, 8}, {0.95, 0.15, 16}, {0.95, 0.25, 8}, {0.95, 0.35, 22}, {0.95, 0.45, 8}, {0.95, 0.55, 6}, {0.95, 0.65, 9}, {0.95, 0.75, 13}, {0.95, 0.85, 5}, {0.95, 0.95, 12}}} Regards, -- Jean-Marc