I have discrete time series emerging from the numerical simulations. It means that the time series can be slightly noisy. The time series should "obey" to the following formula: $$ \psi(t) = \sum_{i=1}^{N} a_i \exp(\alpha_i t) \sin (\omega_i t + \phi_i) $$ where $N$ is not known in advance (it can be 1, 2, or 20) depending on a given simulation.
UPDATE 2016-08-05: Unknown parameters here are $a_i$, $\alpha_i$, $\omega_i$, $\phi_i$, and $N$, although the only thing I need is to extract $\alpha_i$ and $\omega_i$ from these time series.
Previously, when $N=1$ was guaranteed, I used nonlinear least-squares algorithm. It turned out that this algorithm requires an extremely good initial guess to find a right fit. I'm not sure how to provide a good initial guess when $N$ is not known in advance.
What is the most robust and best way to extract parameters I need from these time series? Thank you!
UPDATE 2016-08-05: The following is the code that demonstrates an example time series. This example is purely artificial, though, as I don't have a real time series emerging from numerical simulations right now.
alpha(1) = 0.03;
alpha(2) = 0.05;
alpha(3) = -0.01;
a(1) = 1e-5;
a(2) = 1e-5;
a(3) = 1e-5;
omega(1) = 0.9;
omega(2) = 0.125;
omega(3) = 0.001;
phi(1) = pi/2;
phi(2) = pi/3;
phi(3) = pi;
t = linspace(0, 100, 1000);
d = 0 * t;
for i = 1:3
d = d + a(i) * exp(alpha(i)*t) .* sin(omega(i)*t + phi(i));
end
plot(t, d, 'o-');