How to undo dynamic Doppler effect by software? I have a signal affected by Doppler effect. In general, the Doppler effect changes the scale of the time and frequency domains. So, to undo this phenomenon, I am using a sampling rate converter. Two possible implementations using polyphase structures are shown in Figures 1 and 2. They both work fine as expected. The recovered signal has no Doppler shift.

.

However, while in presence of dynamic Doppler, i.e. the compression/expansion factor varies over time, I am not sure if this solution is appropriate. I am buffering the signal, and for each buffer I compute the corresponding $L$ and $M$ factors that undo the Doppler effect. Nevertheless, there exists a trade-off between buffer length and the frequency resolution. In other words, in a buffer I still have a varying Doppler shift, so the $L/M$ ratio should not be a constant during a single buffer.

Is there a way of apply a sample-to-sample method to undo dynamic Doppler effect? I am currently interested in software-based solutions, not hardware-based ones. For example, in hardware I would dynamically modify the sampling rate. What about in software? How can I dynamically modify the sampling rate?

References:

Both figures were taken from:

R. E. Crochiere and L. R. Rabiner, Multirate Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1983
If the only reason for the buffer is so your algorithm has something to process, then the simplest way to implement this is to keep your current algorithm but use a shorter buffer. If the larger buffer was present for other reasons (i.e. data arrives in large chunks), then keep that larger buffer, but feed it into a shorter buffer that is given to your processing code. (It seems any algorithm able to recognize Doppler shift in a given snapshot must also be able to process that same snapshot.) In this way you can keep your current algorithm, and tailor the short buffer length as desired. I can't imagine how an algorithm specifically designed to do this per sample would be of benefit, unless it takes less CPU--which seems unlikely.