For the removal of a pure interference from a group of sampled signals, if I know the exact frequency of the interference I can simply use an I/Q demodulation technique (i.e., a phasor projection) to calculate it and remove it from the signals of interest. But I don’t have a pure version of the interference so I need to derive it from the data.
I know this is related to clock recovery, but with limited signal record lengths any control loop (e.g., PLL or DLL) would be problematic.
So far I have simply hacked together an ad-hoc relatively long sequence of bandpass filtering, limiting, bandpass filtering, normalization for the I reference and afterwards all-pass filtering/Hilbert transform and normalization for the Q reference. It seems to work, but it’s too much of a hack. And it gets complicated if there are multiple interferers.
Is there a better/simpler way to extract these references?
If not, what would be a good alternative for simple bandpass filters? (as the requirements for these are quite stringent.)
If this was implemented in a real-time system (continuous data stream) instead, would you go the PLL/DLL route, or would this technique be good enough or even equivalent?
Although the most common method to remove these types of interference is to use a notch filter, the ringing in the impulse response of such filters is unacceptable for many applications.
This is particularly true for applications in which an intentional impulsive large artifact is present.