MATLAB Answers

ramesh
0

Range Doppler Response has a linear bias

Asked by ramesh
on 24 Jul 2014
Latest activity Edited by Honglei Chen
on 28 Jul 2014
The range doppler response of matlab's phased array system toolbox seems to have a linear bias for doppler frequency. The system is a moving radar platform (at certain altitude) and a stationary ground target and ground clutter (modeled as phased.ConstantGammaClutter object). In my particular case, 0 velocity will have everything in correct frequency (0 Hz for ground clutter and target), however for 10 m/s velocity, the frequency is 88 Hz more than what it should be (for both ground clutter and ground target), for 20 m/s it is 88*2 Hz more and so on. I am not sure if I'm missing some parameters, my phased.RangeDopplerResponse object is defined as follows
myResponse = phased.RangeDopplerResponse('RangeMethod','Matched Filter', ...
'PropagationSpeed',c, 'DopplerOutput','speed',...
'SampleRate', fs,'OperatingFrequency',fc,...
'DopplerFFTLengthSource','Property', ...
'DopplerFFTLength',1024);
Also, the limit on doppler frequency is supposed to be -PRF/2 to PRF/2 but it is a bit beyond that. This is not of too much concern, but the bias on doppler frequency is an issue. Any help or clarification is greatly appreciated. thanks

  0 Comments

Sign in to comment.

1 Answer

Answer by Honglei Chen
on 25 Jul 2014

Hi Ramesh,
Is it possible for you to provide a little more details? Like what are the fs and fc? What are the position and velocity of the radar and the target? Otherwise it's hard to guess the issue.

  3 Comments

thank you for the reply. sorry, I didn't think those were relevant. fs is 10 MHz (sampling freq), fc is 10 GHz (carrier freq), the waveform is linear chirp with bandwidth of 2 MHz. The radar is placed at [0;0;3000] and the target is at [8.5e3; 0; 0], radar velocity is [50; 0; 0] and target's velocity is [0; 0; 0]. The elevation angle is -19 degrees. with all those parameters, my doppler frequency should be about 597 Hz, but I get 686 Hz. However, if I do my own fft and calculate the range doppler response,it shows correct doppler. Interestingly, the phased.AngleDopplerResponse also produces correct doppler frequency. I don't think the fft length (in phased.RangeDopplerResponse) is an issue as changing it changes the resolution, not the doppler shift.
I don't quite get why you say the correct Doppler frequency is 597 Hz. In fact I get neither 597 Hz nor 686 Hz. Based on what you have
rpos = [0;0;3000];
tpos = [8.5e3;0;0];
rvel = [50;0;0];
tvel = [0;0;0];
The relative speed I get is
rspeed = radialspeed(tpos,tvel,rpos,rvel)
About 47.15 m/s. So the corresponding Doppler is
c = 3e8;
Fc = 10e9;
fd = 2*tvel/(c/Fc)
This turns out to be about 3.14 kHz.
The following code shows a simple example I made based on your description. The PRF is made up but it should work for other values too. The figure I get correctly identifies the speed at about 47.15 m/s. Maybe you can take a look and see what I missed?
c = 3e8;
Fs = 10e6;
Fc = 10e9;
rpos = [0;0;3000];
tpos = [8.5e3;0;0];
rvel = [50;0;0];
tvel = [0;0;0];
dmax = 12e3;
prf = c/(2*dmax);
bw = 2e6;
myWav = phased.LinearFMWaveform('SampleRate',Fs,'PRF',prf,...
'SweepBandwidth',bw,'PulseWidth',0.1/prf);
myRadarPlat = phased.Platform('InitialPosition',rpos,'Velocity',rvel);
myTargetPlat = phased.Platform('InitialPosition',tpos,'Velocity',tvel);
myChannel = phased.FreeSpace('SampleRate',Fs,'PropagationSpeed',c,...
'OperatingFrequency',Fc,'TwoWayPropagation',true);
N = 64;
tstep = 1/prf;
for m = 1:64
[rpos,rvel] = step(myRadarPlat,tstep);
[tpos,tvel] = step(myTargetPlat,tstep);
x = step(myWav);
y(:,m) = step(myChannel,x,rpos,tpos,rvel,tvel);
end
myResponse = phased.RangeDopplerResponse(...
'RangeMethod','Matched Filter', ...
'PropagationSpeed',c, 'DopplerOutput','speed',...
'SampleRate', Fs,'OperatingFrequency',Fc,...
'DopplerFFTLengthSource','Property', ...
'DopplerFFTLength',1024);
plotResponse(myResponse,y,getMatchedFilter(myWav));
Hi Honglei,
I think I figured out what was happening. It is partly my fault. My PRF was 10 KHz which gives me about 15 km of unambiguous range, my targets were at around 9 km so I didn't need to sample beyond a particular index and my code did exactly that. But when I used matlab's RangeDopplerResponse, I think it assumed that my ranges went from 0 to 15 km which caused my limit on doppler frequency to go beyond prf/2 (in negative and positive side) like I mentioned in my original post. I think that is what caused the doppler frequency to be incorrect. Now that I have removed the max-range limit, the problem is rectified.
I greatly appreciate your help. thank you

Sign in to comment.