信号的多普勒展缩建模

在“狭义相对论”的物理学假设下,光速是恒定的,是任何物体运动速度的上限。因此,信号在发送时刻就已经确定了其传播方向与传播距离,与后续收发机的运动无关。

假设发送机从时刻开始,每隔时间间隔,离散地发送一次复信号。时刻,接收机在距离发送机的位置,并且以一定的速度远离发送机运动。

感觉本文最初的假设,发送机在时刻发送的信号,其传播距离仅与有关,假设接收机在时刻收到该信号,则,表示传输时延。

发送机在时刻发送信号,此时二者的距离为,传输时延为,接收机收到信号的时刻为,以此类推,第个复信号的传输时延为 接收机接收到第个复信号的时刻为 接收机收到第个复信号与第个复信号的时间差为 而发送机发送第个复信号与第个复信号的时间差为,由此可以看出,经过多普勒的影响后,信号在接收端表现为平移+展缩的效果。

附录

  • 平移+展缩的MATLAB仿真程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
%% System Parameters
c = 3e8;
t0 = 0;
Ts = 1e-3;
D0 = 5e4;
v = 5e7;
N = 5;
f0 = 5000;
fs = 50 * f0;
t_symbol = Ts;

%% Send and Recv
t_send_total = t_symbol * N;
t = linspace(t0, t0 + t_send_total, fs * t_send_total);
s = cos(2 * pi * f0 * (t - t0));

n = 0:N;
t_send = t0 + n * Ts;
tau_n = (D0 + v * n * Ts) / c;
t_recv = t_send + tau_n;

f_doppler = f0 * (c - v) / c;
delta_t = Ts * (1 + v / c);

t_rx = linspace(t_recv(1), t_recv(end) + t_symbol*(1 + v/c), ...
fs * (t_recv(end) - t_recv(1) + t_symbol*(v/c + 1)));
r = zeros(size(t_rx));
for k = 1:N
idx = t_rx >= t_recv(k) & t_rx < t_recv(k) + t_symbol*(1 + v/c);
r(idx) = cos(2 * pi * f_doppler * (t_rx(idx) - t_recv(k)));
end

%% Plot
figure;
subplot(2,1,1);
plot(t, s, 'b', 'LineWidth', 1.2);
title('发送单音信号时域波形');
xlabel('时间(s)'); ylabel('幅度');
xlim([t0, t0 + t_send_total]); grid on;

subplot(2,1,2);
plot(t, s, 'b--', 'LineWidth', 1.0);
hold on;
plot(t_rx, r, 'r', 'LineWidth', 1.2);
title('接收单音信号时域波形(多普勒效应)');
xlabel('时间(s)'); ylabel('幅度');
xlim([t_recv(1), t_recv(end) + t_symbol*(1 + v/c)]); grid on;

figure;
S_fft = fftshift(fft(s));
f = fs * (-length(s)/2 : length(s)/2 - 1) / length(s);
subplot(2,1,1);
plot(f/1e6, abs(S_fft)/max(abs(S_fft)), 'b', 'LineWidth', 1.2);
title('发送信号频谱');
xlabel('频率(MHz)'); ylabel('归一化幅度');
xlim([f0/1e6 - 1, f0/1e6 + 1]); grid on;

R_fft = fftshift(fft(r));
f_rx = fs * (-length(r)/2 : length(r)/2 - 1) / length(r);
subplot(2,1,2);
plot(f_rx/1e6, abs(R_fft)/max(abs(R_fft)), 'r', 'LineWidth', 1.2);
title('接收信号频谱(多普勒频移)');
xlabel('频率(MHz)'); ylabel('归一化幅度');
xlim([f0/1e6 - 1, f0/1e6 + 1]); grid on;