# Doppler effect in underwater acoustic channel

I got my BER vs SNR graph as shown. I was trying to show the difference in BER with OFDM signal transmission under Doppler effect and without Doppler effect. However, based on my understanding, the BER with Doppler effect should be worse than without Doppler effect. I wonder is my BER vs SNR graph showing decent Doppler effect ?

I tried to simulate doppler effect by the following

[Q1,M1] = rat(1+doppler_scale);

%the received signal(tf_ofdm1) after convolution of input signal with channel is resampled
tf_ofdm = resample(tf_ofdm1, M1, Q1);

err_dopp = 2e-3;  %error in Doppler scale estimation
[Q2, M2] = rat(1+(1-err_dopp)*doppler_scale);
rt_ofdm = resample(rt_ofdm1, Q2,M2);

%proceed to demodulation and calculate BER.


• How do you apply the Doppler effect on the signal? – A_A Oct 17 '19 at 10:18
• the time delay of the channel divided by (1+a) which a is doppler scaling factor – sterstar Oct 18 '19 at 11:09
• The doppler effect presents a phase shift proportional to the relative velocity of movement between the transmitter and the receiver. You cannot simulate the doppler effect with a static delay. In your setup, if you pass a single sinusoid through your channel function and specify a velocity of relative movement $v$, does it shift its frequency? A single delay will show as a phase jump followed by an amplitude change (depending on the phase). – A_A Oct 18 '19 at 11:33
• I'm not passing a single sinusoid through my channel. Instead, I'm using randn() function to generate my input signal. How can I simulate the doppler effect if I have amplitude and time delay of my channel? – sterstar Oct 19 '19 at 3:15
• @A_A In UWA channels the Doppler effect is a phase shift and a time dilation/compression. The factor $a=v/c$ where $v$ is the relative velocity between the transceivers, and $c$ is the sound speed in underwater. – BlackMath Oct 19 '19 at 5:03

First of all, I would say you need more simulation points to make the curve smoother. You can't make a definite judgment based on these curves. Can you increase the number of simulation points, and report back?

Of course with Doppler effect, BER should be worse if not handled at the receiver, but if you have a common Doppler scaling factor for all paths, then you can effectively remove this effect completely at the receiver.

For example, in single-carrier systems, the noise-free received signal would be something like

$$r(t)=\sum_ph_ps([1+a]t-\tau_p)$$

where $$s(t)$$ is the transmitted signal, then you can re-sample the received signal as rate $$\frac{nT_s}{1+a}$$, where $$T_s$$ is the symbol duration, and the systems with Doppler and without Doppler would have the same performance.

However, if each path has its own Doppler scaling factor, then you need to use a receiver structure called multiple resampling, which is a little more complicated, and there will always be a residual effect from the Doppler effect, which is translated into inter-carrier interference in OFDM, and thus requires a second stage of frequency equalization.

• I have a smoother curve now. I am using uniform Doppler scaling factor for all paths and the BER performance that shows me has no difference with the none-Doppler effect. That's why I am wondering am I using wrong way to simulate Doppler effect. I just divide the time delay of my channel with (1+a). – sterstar Oct 19 '19 at 5:27
• It seems to me that dividing the delay spread by $1+a$ is meant to convert the delay spread into dilated/compressed symbol time. In my work I was resampling the received signal itself. See this paper "Optimal Bayesian Resampling for OFDM Signaling Over Multi-scale Multi-lag Channels" and this "Multiple-Resampling Receiver Design for OFDM Over Doppler-Distorted Underwater Acoustic Channels" for the general case. You can derive the special case from these. – BlackMath Oct 19 '19 at 6:18
• May I know how do you do resampling in Matlab? – sterstar Oct 19 '19 at 14:51
• mathworks.com/help/signal/ref/resample.html – BlackMath Oct 19 '19 at 19:51
• Did you just resample the received signal? How about the transmit signal? I tried the function resample in Matlab, but it needs integer values and it is actually truncating my matrix dimension. Which makes my code unable to run. Besides, I am following the example in this paper "DSP implementation of OFDM-based underwater acoustic communication transceiver" which the doppler factor is uniformly distributed between -0.0015 and 0.0015. With this values, the resample did not let me run – sterstar Oct 21 '19 at 3:34