The FMCW radar with the following parameters was implemented:
% System parameters Value % ---------------------------------- % Operating frequency (GHz) 77 % Maximum target range (m) 15 % Range resolution (m) 0.037 % Maximum target speed (km/h) 30 for fall detection % Sweep time (microseconds) 50 % Sweep bandwidth (GHz) 4 % Maximum beat frequency (MHz) 73 % Sample rate (GHz) 4.050 A target was simulated with the following parameters(static radar) dist = 14; speed = 10*1000/3600; ;%2.77km/h rcs = 100; and the Range Doppler image plotted using the phased array functions. RangeFFTLength = 2048; DopplerFFTLength = 512; rngdopresp = phased.RangeDopplerResponse('PropagationSpeed',c,... 'DopplerOutput','Speed','OperatingFrequency',fc,'SampleRate',fs,... 'RangeMethod','FFT','SweepSlope',sweep_slope,... 'RangeFFTLengthSource','Property','RangeFFTLength',RangeFFTLength,... 'DopplerFFTLengthSource','Property','DopplerFFTLength',DopplerFFTLength); figure plotResponse(rngdopresp,xr); [![enter image description here]] The results are as expected. Interested to get the same results implementing the 2DFFT manually. For this purpose the following code was used: Nr = RangeFFTLength; Nd = DopplerFFTLength; % 2D FFT using the FFT size for both dimensions. sig_fft2 = fft2(xr,Nr,Nd); % Taking just one side of signal from Range dimension. sig_fft2 = sig_fft2(1:Nr/2,1:Nd); sig_fft2 = fftshift (sig_fft2); RDM = abs(sig_fft2); RDM = 10*log10(RDM);
Yielding the following:
The index of the range and velocity are: [518 229].
This yields the following values:
fb=fs/2; range_max = cfb/(2sweep_slope); distance = ((518-512)/512)*range_max distance = 43.9453
This is 3 times larger then the correct value. Why?
Converting the index to the abs value using the following, yields correct value:
vel_max = lambda/(4*tm); sp = ((293-256)/256)*vel_max sp = 2.8155
Seems, however, that the velocity in this case is positive – why? The code can be seen below: