# How to simulate the Doppler effect on a random signal?

65 ビュー (過去 30 日間)
Jonathan Scott 2019 年 6 月 5 日
Hello,
I am trying to simulate some digital TV signals and their reflections for a simple passive radar proof of concept program. Since ATSC signals in the US are approximately noise-like, I am attempting to simulate a low power Gaussian signal incident on a two element array, with a lower power reflection incident some time later (by padding a scaled down copy of the original Gaussian signal with the appropriate number of samples corresponding to the time of flight). I am then calculating the cross ambiguity of these two functions with some filtering applied to cancel out the direct path interference.
My simulation is working perfectly, except I can't seem to figure out how to simulate a Doppler shift on my signal.
c = physconst('lightspeed');
fs = 10e6; %sampling rate
fc = 641e6; %center frequency
fmax = 800e6;
t_sample = 1/fs;
lambda = c/fc;
distTowerToTgt = 18920;
distTgtToRec = 30000;
dist = distTowerToTgt + distTgtToRec;
ToF = dist/c;
t = 0:t_sample:0.5;
ref_signal = wgn(1,size(t,2),-68,'complex'); %DIRECT SIGNAL
refPower = var(ref_signal);
survPower = 10^(-129.3357/10);
ref_scale = survPower/refPower;
ref_scaleDpi = ref_scale;
total_surv_signal = ref_scale*ref_signal; %SURVEILLANCE SIGNAL
numDelays = round(ToF/t_sample);
total_surv_signal = total_surv_signal(1,1:size(ref_signal,2));
%% Doppler shift (need to resample)
This code generates the two signals well and the range comes out correct in my ambiguity function. An attempt I've made to simulate the Doppler effect used interpolation:
len = size(total_surv_signal, 2);
vE = 222;
vR = 0;
doppShift = fc*(1+(vE/c));
total_surv_signal = interp1(1:len, total_surv_signal, linspace(1, len, len * (c - vR) / (c + vE)));
total_surv_signal = padarray(total_surv_signal', len-numel(total_surv_signal), 0, 'post')';
However, this did not manifest in a Doppler shift in my ambiguity function, merely a peak at the same point and broadening in the Doppler bins. I also tried to multiply the entire total_surv_signal by a complex exponential of value , which I believe should work since my simulated signal is just baseband IQ data (conceptually). However, this gave a truly confusing output and seems a pretty hopeless approach.
Is there something I'm missing here? This seems it should be relatively straightforward, but I've been struggling with this for a few days.
Any help would be appreciated!

#### 0 件のコメント

サインイン to comment.

### 回答 (0 件)

サインイン してこの質問に回答します。

Translated by