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
| c = 3e8; t0 = 0; Ts = 1e-3; D0 = 5e4; v = 5e7; N = 5; f0 = 5000; fs = 50 * f0; t_symbol = Ts;
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
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;
|