Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

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

Search the Archive

Re: "mapping" functions over lists, again!

  • To: mathgroup at smc.vnet.net
  • Subject: [mg96260] Re: "mapping" functions over lists, again!
  • From: "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>
  • Date: Tue, 10 Feb 2009 05:53:05 -0500 (EST)
  • References: <gmp0q7$c0j$1@smc.vnet.net>

Paul,

I would love to help, but your text is speckled with strange codes
making it utterly unreadable. Could you try to post plain ASCII code?
The Mathematica part of it is best transformed using the menu Cell/
Convert to/InputForm. For the text part I'd use notepad or any other
plain ascii editor.

Cheers -- Sjoerd

On Feb 9, 12:33 pm, "Paul Ellsmore" <paul.ellsm... at nanion.co.uk>
wrote:
> I am a novice, and I have asked this question before (or tried to) and
> thought that the answers I got would work, and that I understood them, =
=
> but
> now I realize that I didn=92t ask quite the question I thought I had, =
=
> and
> didn=92t understand the answers. So=85
>
> I have data in the form:
>
> shortTestdata = {{{40,28.0678 +1.20855 =E4},{43.094,28.0572 +1.29852
> =E4},{46.428,28.0553 +1.40023 =E4},{50.019,28.0551 +1.50876 =
> =E4},{53.888,28.0573
> +1.62452 =E4},{58.057,28.0565 +1.75026 =E4}},{{40,7.42169 +0.219859
> =E4},{43.094,7.4084 +0.234353 =E4},{46.428,7.40377 +0.252135 =
> =E4},{50.019,7.40131
> +0.271599 =E4},{53.888,7.40048 +0.292062 =E4},{58.057,7.39994 +0.3145=
01
> =E4}},{{40,1685.53 +0.0480998 =E4},{43.094,1694.69 -0.0913363 =
> =E4},{46.428,1698.27
> -0.0273182 =E4},{50.019,1699.76 -0.0491538 =E4},{53.888,1700.52 =
> -0.217922
> =E4},{58.057,1701.16 -0.242314 =E4}},{{40,1808.7 -0.00628662 =
> =E4},{43.094,1808.52
> -0.114076 =E4},{46.428,1808.53 -0.0244589 =E4},{50.019,1808.44 -0.106=
166
> =E4},{53.888,1808.48 -0.176297 =E4},{58.057,1808.63 -0.289451 =E4}}=
} =
> that is to
> say, lists of pairs of real and complex values. Note that I mean a list =
=
> of
> lists (four lists in the above case). I need to keep the integrity of =
> these
> lists, while doing operations on them.
>
> In particular, I want to be able to turn every pair {real, complex} into
> {real, f[complex]}. It was suggested to me that I use Cases, as follows:
>
> Realpart = Cases[shortTestdata,{r_Real,c_Complex}=A6{r,Re[c]}] . If I=
 =
> apply
> this to the first list in shortTestdata, i.e {{40,28.0678 +1.20855
> =E4},{43.094,28.0572 +1.29852 =E4},{46.428,28.0553 +1.40023 =
> =E4},{50.019,28.0551
> +1.50876 =E4},{53.888,28.0573 +1.62452 =E4},{58.057,28.0565 +1.75026 =
=
> =E4}} I get:
>
> {{43.094,28.0572},{46.428,28.0553},{50.019,28.0551},{53.888,28.0573},{58.=
=
> 057
> ,28.0565}}
>
> This seems to miss out the first data pair of the list. Am I making a
> mistake with the syntax?
>
> I thought that the following would work for the full lists of lists:
>
> realpart=Cases[shortTestdata,{r_Real,c_Complex}=A6{r,Re[c]},2] i.e =
=
> apply the
> rule to all parts at level 2 of shortTestdata, but I get:
>
> {{43.094,28.0572},{46.428,28.0553},{50.019,28.0551},{53.888,28.0573},{58.=
=
> 057
> ,28.0565},{43.094,7.4084},{46.428,7.40377},{50.019,7.40131},{53.888,7.400=
=
> 48}
> ,{58.057,7.39994},{43.094,1694.69},{46.428,1698.27},{50.019,1699.76},{53.=
=
> 888
> ,1700.52},{58.057,1701.16},{43.094,1808.52},{46.428,1808.53},{50.019,1808=
=
> .44
>
> },{53.888,1808.48},{58.057,1808.63}}
>
> This still misses the first pair of each list, and now flattens the
> structure, so I don=92t know where my four lists start and end any more=
! =
> I
> have tried Map with Cases but frankly have no idea what the syntax =
> should
> look like, and either get error messages or empty lists as output. The
> documentation shows no examples of Map on a list of lists, so maybe it =
=
> is
> simply not possible?
>
> This is just a specific example of a difficulty I am having =
> understanding
> how Mathematica deals with lists of lists. In general I would like to be
> able to =93Map=94 functions over these lists of lists, to make =
> transformations
> such as {real, complex} -> {real, f[real, complex]} but I just cannot =
> figure
> out how to do this. Note that my datasets can be of varying length =96 =
=
> that
> is, the number of lists in shortTestdata can vary, and those lists will =
=
> not
> in general be all of the same length, so Flatten and Partition are not
> convenient to use, and I really do need the list of lists structure.
>
>  Any help would be very gratefully received.
>
> Thanks,
>
> Paul.
>
> Dr. Paul A. Ellsmore
>
> Nanion Limited
>
> Oxford Centre for Innovation
>
> Mill Street
>
> Oxford
>
> United Kingdom
>
> OX2 0JX
>
> Tel: +44 (0) 1865 811175
>
> Fax: +44 (0) 1865 248594



  • Prev by Date: Re: "mapping" functions over lists, again!
  • Next by Date: Re: testing if a point is inside a polygon
  • Previous by thread: Re: "mapping" functions over lists, again!
  • Next by thread: Re: "mapping" functions over lists, again!