Estimating Damping Factor (Q) from Noisy Measurements I have a damped, tuned circuit and want to measure its Q factor. The hardware sends an impulse 'ping' and samples the output as it rings down.

Is there an efficient way to fit an equation of the form $A e^{t(i\omega  + b)} $ to a series of samples? I know $\omega$ up front, and $A$ isn't relevant. I am primarily interested in the value of $b$.

For my system the Q factors I want to measure are in the range 2-5, and the amplitude of the noise is about 10% of the signal.

My current solution uses a Goertzel filter to measure the energy at the frequency of interest for each of the successive cycles, then looks for the point where the magnitude drops by a quarter. With some interpolation between the cycles before and after the quarter point, this gives reasonable but not great results. It is especially bad for the low end of the Q range.
Our system has the impulse response (why we changed to imaginary instead of real? :) ):
$$h(t)=\mathbb{Im}(Ae(iwt)e(-bt))=Ae^{-bt}sin(wt)$$

With the following structure (ref.) (discretized):
$$H(s)=\frac{Kw}{(s+b)^2+w^2}$$

Under matlab, you only need to use procest:

procest(data,'P2U');


Which models the same structure under the form:
$$H(s)=\frac{K}{(1+2\zeta T_ps+T_p^2s^2)}$$