First we have to generate some sample data to work with:
Clear[a, x];
polynomials = RandomInteger[100, 20] x^2;
noisyData[poly_] := poly /. x -> Range[0.1, 10, 0.1] + RandomReal[0.1, 100]
ListPlot@noisyData[First@polynomials]
This represents the noisy data that you have obtained somehow. Note that I'm supposing a sample frequency of 10 samples per unit step. So on the x axis it says 100, but actually if the x axis represented time it would only say 10. In order to fit this data we have to supply the x coordinate corresponding every measurement.
data = Transpose[{Range[0.1, 10, 0.1], noisyData[First@polynomials]}];
r = FindFit[data, a x^2, a, x]
Plot[a x^2 /. r, {x, 0, 10}]
(* Out: {a -> 96.2328} *)
The actual coefficient in the example above is 95, but it was estimated to 96.2. Let's find the estimate of all polynomials:
data = Transpose[{Range[0.1, 10, 0.1], noisyData[#]}] & /@ polynomials;
estimates = FindFit[#, a x^2, a, x] & /@ data;
clusters = FindClusters[a /. estimates]
(* Out: {{96.2559, 94.0996, 85.1444, 100.196}, {74.8276, 63.7454, 70.7918,
77.9841, 72.85, 77.9613}, {41.5601, 48.6428, 57.6537, 47.627,
51.5892, 56.6536}, {21.2733, 29.4381, 22.2827, 12.1583}} *)
Here I've used FindClusters
to let Mathematica sort the polynomials into suitable groups. As you can see in the result it found four groups of polynomials. We can plot them to verify our results:
fittedPolynomials = clusters x^2;
Show@MapThread[
Plot[#, {x, 0, 10}, PlotStyle -> #2] &,
{fittedPolynomials, {Red, Green, Blue, Purple}}
]
In this example I have specified four colors because I have four groups of polynomials. You will have to supply as many colors as you need.