Borrar filtros
Borrar filtros

FMCW radar range estimation differences between phased.RangeResponse and fft

6 visualizaciones (últimos 30 días)
I tried to run the following radar simulation, and it succeeded:
Radar simulation [ openExample('driving_radar/AutomotiveRadarInterferenceExample') ]
However, when I try to replace these codes (line 168)
% Define range response
rngresp = phased.RangeResponse('RangeMethod','FFT', ...
'SweepSlope',fmcwwav1.SweepBandwidth/fmcwwav1.SweepTime, ...
'RangeFFTLengthSource','Property','RangeFFTLength',Nrange, ...
'RangeWindow','Hann','SampleRate',fmcwwav1.SampleRate);
% Calculate the range response of interference-free data cube
XrngTgt = rngresp(XcubeTgt);
with this one:
XrngTgt = fftshift(fft(XcubeTgt, Nrange));
the results seem to be different.
After a detailed check, I found that the result of phased.RangeResponse and FFT is different. However, what makes these differences is not described on the official website. Additionally, it is challenging to understand the implementation details in phased.RangeResponse.
Any help or clarification is greatly appreciated. Thanks.
  1 comentario
Jingqi
Jingqi el 26 de Feb. de 2024
NOTE: Results still remain different, even if the 'RangeWindow' is set to 'Non' in the first code.

Iniciar sesión para comentar.

Respuesta aceptada

George
George el 27 de Feb. de 2024
The main reason why you are see differences is because of the "RangeWindow" being set to Hann in the RangeResponse but not applying that window to the radar data. Also, you need to make sure to fftshift along the correct dimension. Try running the following snippet after running the example:
% Define range response
rngresp = phased.RangeResponse('RangeMethod','FFT', ...
'SweepSlope',fmcwwav1.SweepBandwidth/fmcwwav1.SweepTime, ...
'RangeFFTLengthSource','Property','RangeFFTLength',Nrange, ...
'RangeWindow','Hann','SampleRate',fmcwwav1.SampleRate);
% Need to apply hann window to input (Range Window)
coeff = hann(size(XcubeTgt,1));
input = coeff .* XcubeTgt;
% Compare results
XrngTgtRR = rngresp(XcubeTgt);
XrngTgtFFT = fftshift(fft(in, Nrange),1);
isequal(XrngTgtRR,XrngTgtFFT)
  1 comentario
Jingqi
Jingqi el 27 de Feb. de 2024
Great thanks, the results from FFT and RangeResponse are truely same.
The previous error is caused by using fftshift in the wrong dimension.
Thanks again!

Iniciar sesión para comentar.

Más respuestas (0)

Productos


Versión

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by