So I have a digital linear chirp signal:

$$ x[n] = \sqrt{\frac{2}{N}} \cdot \cos\Big( 2 \pi \frac{f_{0}}{f_{s}}n + \pi \frac{B}{N} n^{2}\Big) $$

Where $f_{0}$ is the initial frequency, $f_{s}$ is the sampling frequency, $B$ is the bandwidth and $N$ is the number of samples.

I want to simulate a Doppler shift. I am not sure exactly how to do this.

I know I need to multiply by initial frequency $f_{0}$ by the Doppler shift $d$, and do the same with the bandwidth. This will give me:

$$ x_{d}[n] = \sqrt{\frac{2}{N}} \cdot \cos\Big( 2 \pi \frac{d \cdot f_{0}}{f_{s}}n + \pi \frac{d \cdot B}{N} n^{2}\Big) $$

I know Doppler compresses or expands my waveform in time, and I know how to simulate the Doppler shift in the case of a simple sinusoid. However, I am a bit confused here.

Do I need to change the number of samples $N$ as well? If so, by how much exactly?



3 Answers 3


You need to resample the signal to simulate the Doppler induced dilation. The resampling factor is I=Td/Ts where Td = Duration of the signal after dilation Ts = Actual duration of the transmitted signal

In Matlab you can use the function resample(), but you need to find the resampling parameters P and Q from I.

Also, I=1+v/c for signal expansion and I=1-v/c for signal compression. v=speed of movement in m/s and c=speed of wave propagation in the medium. For instance sound underwater c=1500 m/s.

In Matlab, you can find P and Q as [P,Q]=rat(I);

  • $\begingroup$ Okay, but how can I calculate the duration of the signal after the Doppler shift. This is what I am confused about how to do. $\endgroup$
    – The Dude
    Mar 31, 2019 at 18:00
  • $\begingroup$ See my edited answer above. $\endgroup$
    – Harris
    Mar 31, 2019 at 23:52
  • $\begingroup$ Thanks! Could you point to a proof for this idea? ie that the time compression function takes this exact form? Ie, when $I = d$, $d$ being the Doppler shift? Because the guy below (@Digiproc) seems to claim that $I = \frac{1}{d}$ $\endgroup$
    – The Dude
    Apr 1, 2019 at 0:54
  • 1
    $\begingroup$ Look into this book for the details: A. W. Rihaczek,Principles of High-Resolution Radar: Peninsula Publishing, 1985. $\endgroup$
    – Harris
    Apr 1, 2019 at 1:06
  • 1
    $\begingroup$ Check also this paper out: ieeexplore.ieee.org/abstract/document/820736 $\endgroup$
    – Harris
    Apr 1, 2019 at 1:26

Rather than re-sampling, this is best accomplished by re-creating the signal after it is Doppler shifted. This allows any arbitrary waveform to have Doppler imparted on it. See Mark A. Richards, "Fundamentals of Radar Signal Processing," section 2.6.1. and in particular equation 2.90 for details on why this works.

Let's say that we start with a complex chirp:

% tau is the pulse length
% fs is the sampling frequency
% B is the LFM swept bandwidth
% fc is the center RF frequency of the chirp
% tgtrng is the radial range to the target

t = (0:tau*fs-1)/fs;
chirp = exp(1j*pi*B/tau * (t - tau/2).^2);

Calculate the radial velocity of the target using vector math, then:

beta = v_radial/c;
alpha = (1+beta)/(1-beta);

Now resample the chirp by actually creating a new, time-adjusted version

t = (0:fs/PRF-1)/fs;
t_new = alpha*(t - 2*tgtrng/(1+beta)/c);
sig = exp(1j*2*pi*fc*(t_new-t)).*exp(1j*pi*B/tau*(t_new - tau/2).^2);
sig(t_new < 0)=0;
sig(t_new > tau)=0;

sig is now the sampled version of the incoming waveform with Doppler.

  • $\begingroup$ This is essentially what I ended up doing. Thanks for the code snippets -- I am sure this will be useful :-) $\endgroup$
    – The Dude
    Nov 30, 2021 at 16:22

The number of samples should be divided by the Doppler shift, because the duration of the chirp decreases with an increase in Doppler shift.

  • $\begingroup$ Right, so in my equation above, I should replace $N$ by $\frac{N}{d}$, with $d$ being the Doppler shift? $\endgroup$
    – The Dude
    Mar 31, 2019 at 18:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.