Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

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

Search the Archive

Re: Sorting into bins

  • To: mathgroup at smc.vnet.net
  • Subject: [mg119668] Re: Sorting into bins
  • From: Dana DeLouis <dana.del at gmail.com>
  • Date: Fri, 17 Jun 2011 00:07:04 -0400 (EDT)

... I wish to sort a list of {{x,y}...} values into uneven bins using 
the x values

Hi.  Not sure, but here's one general method.

A general function that divides you x values based on size.  (I'll use 
Log10, but you can use your function here.).

f[x_]:=Log10[x]//Floor

Some Random data of length 2,3,& 4
I suggest Sorting the list here as it makes the code later a little 
easier.

t=RandomInteger[{1,2000},{10,2}]//Sort;
t//MatrixForm
(18	592
49	1441
67	672
670	713
1318	1827
1417	1487
1437	586
1594	40
1600	1908
1786	1564
)

GatherBy[t,f[First[#]]&] 

{
{{18,592},{49,1441},{67,672}},
{{670,713}},
{{1318,1827},{1417,1487},{1437,586},{1594,40},{1600,1908},{1786,1564}}
}


As you see, the bins are based on digit lengths of 2, 3 or 4.
You'll have to think of your own function here.

= = = = = = = = = =
HTH  : >)
Dana DeLouis
$Version
8.0 for Mac OS X x86 (64-bit) (November 6, 2010)

On Jun 15, 7:19 am, Hugh Goyder <h.g.d.goy... at cranfield.ac.uk> wrote:
> I wish to sort a list of {{x,y}...} values into uneven bins using the
> x values to locate the bin but have the bins contain the y values.
> This seems like an application for BinLists but it only seems to work
> on a list of x values. The motivation is to give a spectra in terms of
> 1/3 octaves which is a standard presentation in acoustics. Below I
> construct the bin center frequencies cf, the bin boundaries bb and
> generate a time history th,  spectra, yy and corresponding frequencies
> xx. How do I then sort the list into my bins?
>
> Thanks
> Hugh Goyder
>
> cf = Table[(1/100.) Round[100 (1000/1024) 2^n], {n, 1, 15, 1/3}];
> bb = Table[Sqrt[cc[[i]]*cc[[i + 1]]], {i, 1, Length[cc] - 1}];
> sr = 60000.;
> th = Table[y, {y, 0, 1, 1/sr}]; n = Length[th];
> yy = Take[
>    Fourier[th, FourierParameters -> {1, -1}], {1, Ceiling[n/2]}];
> xx = Table[f, {f, 0, sr/2, sr/n}];
> data = Transpose[{xx, yy}];




  • Prev by Date: Re: Problems with DSolve
  • Next by Date: Re: Problems with DSolve
  • Previous by thread: Re: Sorting into bins
  • Next by thread: Washington DC Area Mathematica SIG