MathGroup Archive 2010

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

Search the Archive

Re: <Null> while building lists

  • To: mathgroup at smc.vnet.net
  • Subject: [mg112186] Re: <Null> while building lists
  • From: Ray Koopman <koopman at sfu.ca>
  • Date: Sat, 4 Sep 2010 03:59:08 -0400 (EDT)
  • References: <i5qhfr$pio$1@smc.vnet.net>

On Sep 3, 3:08 am, Alessandro <alexxx.ma... at gmail.com> wrote:
> Hi group,
> I'm sure I'll bang me on my head as soon as I will Press <Post
> Message>,
> but it's since yesterday that I'm struggling with this...
>
> I fast defined this awkward function, to collect the {index,value} of
> the maxima of a list of reals (a Fourier transform):
>
> maxima[f_] := Block[{old = f[[1]], m = {}},
>   For[i = 2, i < Length[f]/2, i++,
>     If[f[[i]] > old && f[[i + 1]] < f[[i]],
>      AppendTo[m, {i, f[[i]]}]];
>     old = f[[i]]
>     ]
>    m
>   ]
>
> Problem is, what I get is e.g. this:
>
> > maxima[f]
> > {{14 Null, 10.8853 Null}, {21 Null, 3.34261 Null}, {28 Null, 1.47219 Null}}
>
> I'm sure I do not have spaces anywhere (it happened something similar
> due to this error, time ago),
> so what's wrong?
>
> thanks for any help...
>
> alessandro

Your code needs a semicolon between For[...] and m.

Here another way to do it:

Transpose[{#,f[[#]]}]&[1 + Flatten@Position[
 Partition[ Take[f, Ceiling[(1 + Length@f)/2]], 3, 1],
 {a_,b_,c_}/;a < b > c]]


  • Prev by Date: Re: Time Series Data in Quarters [correction]
  • Next by Date: Re: <Null> while building lists
  • Previous by thread: Re: <Null> while building lists
  • Next by thread: Re: <Null> while building lists