I have to estimate the parameters of a 1st order transfer function, namely, the coefficients, through experiment. I ran a few experiments and I have a bunch of input-output data vectors. The experiment was a standard frequency response test, i.e., the inputs were a bunch of different frequency sine waves, around the frequency of our guess of where the pole should be.
The problem is, there is some nasty noise involved. And I mean real nasty. Sometimes the noise clearly has amplitude as big as the signal itself, sometimes you just can't see any signal at all. Our first approach consisted on bandpass filtering the output and using
lsqcurvefit to estimate the parameters of the transfer function. However, it's not working all that great, mainly because of the terrible SNR (simulations with more reasonable SNR worked just fine).
Is there a better way to go about this? I've read about the kalman filter, which supposedly is the optimal filter, which should be good, but it seems to be a state estimator and this is not what I'm looking for, I have a measured state, I need a parameter estimator. Maybe there's a way to use the kalman filter for this? Can you explain/point me in the right direction to learn about this?
If kalman is not the way to go, what other way could we try, rather than butter + lsqcurvefit? Any general advice on dealing with noisy data other than bandpass filtering?
Thanks in advance!