Use of complex numbers to calculate Doppler effect?

First of all, I'm a beginner in this field, please tell me if any of what I'm asking is too basic / can be found with some google research.

I have a situation with a static TX and a moving RX (v is its velocity vector): I know the value of $\vec{v}$ and the position of $TX$ and $RX$.

My goal is to simulate the Doppler shift that the $RX$ would experience, with the desired output similar to this: so I ended up with the following equation:

$$f' = \frac{c + v\cos(\theta)}{c}f$$

and I ended up with (This is LOS, so I didn't consider reflectors, so no noise)

Question

This seems to work fine; however in some papers (and I have been told) that to apply the doppler shift to a signal, one must apply a rotation to it, so multiply by $e^{i\theta}$. Is this useful / necessary for Doppler ? In which cases should I use it ? How ?

Bottom Line First

What you suggest will only work if your signal is at baseband and not at a carrier, which is usually the best way to do any simulation work regardless. If your signal is not at baseband first multiply by $e^{-j2\pi f_c t}$ where $f_c$ is the carrier frequency and low pass filter out the higher image (which will now be centered at $-2f_c$) to create the baseband equivalent waveform. With this you can simply multiply by $e^{\pm j2\pi f_d t}$ to introduce a Doppler shift. If you need to have your waveform at a carrier frequency in simulation, then you can shift the Doppler-shifted signal back to the carrier after the Doppler shift operation at baseband described above by multiplying the resulting shifted waveform by $e^{+j2\pi f_c t}$ and then taking the real part if a real signal is desired. Usually however ALL simulation work can be done at baseband with a complex envelope that is equivalent to what is happening at any carrier frequency and much simpler to model.

(Note if the concept of baseband vs passband mentioned above is confusing, see this post that goes into further details on that: modulate complex time domian signal to a carrier frequency)

DETAILS

Simply multiplying any signal by a complex rotation will not work for simulating a Doppler shift in all cases; that applies to when the signal is represented by its complex equivalent at baseband, or if you are only concerned with the complex single-sided equivalent of your signal.

This is because the Doppler will shift a signal either higher in frequency or lower in frequency depending on the relative direction (as you have properly shown), and a real signal is comprised of both positive and negative frequency components, each described by $e^{j2 \pi f t}.$ and multiplying by a single complex rotation will shift EVERYTHING in the same direction.

Multiplying a single complex tone at carrier frequency $f_c$ ( $e^{j2\pi f_c t}$) by a Doppler frequency $f_d$ ($e^{j2\pi f_d t}$) is simply summing the exponents which results in the expected frequency shift:

$$e^{j2\pi f_c t}e^{\pm j2\pi f_d t} = e^{j2\pi (f_c \pm f_d) t}$$

(And the same would occur is we were dealing with a modulated signal as a band of frequencies around $+f_c$.)

However, look what happens if the signal of interest is a real cosine wave which is comprised of TWO complex conjugate symmetric complex tones:

$\cos(2 \pi f_c t) = \frac{1}{2}e^{j2\pi f_c t}+ \frac{1}{2}e^{-j2\pi f_c t}$

$\cos(2 \pi f_c t)e^{j2\pi f_d t} = \frac{1}{2}e^{j2\pi (f_c+f_d) t}+ \frac{1}{2}e^{-j2\pi (f_c-f_d) t}$

Thus we see that for a cosine wave (or any real signal) which has a positive frequency spectrum and a complex conjugate negative frequency spectrum (same magnitude, opposite phase), all components will shift in the same direction-- NOT what occurs for a Doppler shift.

I would highly recommend doing all such simulations at baseband (remove the carrier frequency and replace with 0 Hz and deal with complex signals expressed as $e^{j\omega t}$, not sines and cosines) in which case you can do such an operation which is significantly simpler. However if it absolutely needed to simulate with a carrier, to shift a real signal at a carrier frequency by a Doppler frequency, you need to first take the Hilbert transform of your signal, which when summed in quadrature with the original signal, effectively removes all the negative frequencies (in practical implementation, this is a quadrature splitter and the resultant complex signal is implemented as two separate real channels), and then with this new complex signal, you can multiply by $e^{\pm j2 \pi f_d t}$ as suggested to shift with the sign chosen dependent on the direction desired. After multiplying you can take the real of the result to re-establish your original real signal with the Doppler shift induced. Note this is exactly how a single-sideband modulator is structured as demonstrated by the slides pasted below:

Note, the operation above is showing how to shift a single-sideband signal at $\omega_{\Delta}$ away from the carrier down to baseband, but the same approach can be used to show how to shift a signal at $\cos(\omega_c)$ to $\cos(\omega_c+\omega_{\Delta})$ where $\omega_{\Delta}$ represents the Doppler shift. Also to note in the last diagram, the Hilbert transform will convert the cosine to a sine, and must be added to the sine with a $j$ term to become the desired exponential rotation:

$e^{j\omega_c t}= \cos(\omega_c t)+ j \sin (\omega_c t)$

In the implementation the required j term shown in front of the sine is implied by carrying that path separately (as is the case with having I and Q paths in a digital modem implementation for example); we need two real numbers to represent a complex number, as is done by having the two signal paths. (either as real and imaginary components such as $I + jQ$ or as magnitude and phase components suchs as $A\angle \phi$, which by the way is equivalent to $Ae^{j\phi}$)

The above approach based on a single-sideband modulator gives excellent insight into how to shift a signal at a carrier frequency in one direction (as happens with Doppler shift), and it would be exactly how a hardware implementation could be done at RF to simulate a Doppler shift. For simulation work my favored approach would be to do all simulation at baseband using the "Bottom Line" approach first described.