I am trying to tune an arbitrary amount of distributed gaussians to a function - each with its own set of parameters. Currently, if I want to use twenty functions, I do the following
Ο[Ξ±_?NumberQ, x_?NumberQ, xi_?NumberQ, c_?NumberQ] := ( c E^(- Ξ± (x - xi)^2/2))/Sqrt[Ξ±/Ο]; Data := Table[{n/50, N[f[n/50]]}, {n, -300, 300}]; model = Ο[a1, x, x1, c1] + Ο[a2, x, x2, c2] + Ο[a3, x, x3, c3] + Ο[a4, x, x4, c4] + Ο[a5, x, x5, c5] + Ο[a6, x, x6, c6] + Ο[a7, x, x7, c7] + Ο[a8, x, x8, c8] + Ο[a9, x, x9, c9] + Ο[a10, x, x10, c10] + Ο[a11, x, x11, c11] + Ο[a12, x, x12, c12] + Ο[a13, x, x13, c13] + Ο[a14, x, x14, c14] + Ο[a15, x, x15, c15] + Ο[a16, x, x16, c16] + Ο[a17, x, x17, c17] + Ο[a18, x, x18, c18] + Ο[a19, x, x19, c19] + Ο[a20, x, x20, c20]; nlm = NonlinearModelFit[Data, model, {a1, x1, c1, a2, x2, c2, a3, x3, c3, a4, x4, c4, a5, x5, c5, a6, x6, c6, a7, x7, c7, a8, x8, c8, a9, x9, c9, a10, x10, c10, a11, x11, c11, a12, x12, c12, a13, x13, c13, a14, x14, c14, a15, x15, c15, a16, x16, c16, a17, x17, c17, a18, x18, c18, a19, x19, c19, a20, x20, c20}, x];
This works well, but it is tedious to create these linear combinations manually. It would be great to create a linear combination of functions with a coefficient vector for a, xi and c. I just donβt know how to approach this, and I was hoping you guys could talk about this.
Best
Thomas