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]]