FMCW radar range estimation differences between phased.RangeResponse and fft

4 vues (au cours des 30 derniers jours)
Jingqi
Jingqi le 26 Fév 2024
Commenté : Jingqi le 27 Fév 2024
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 commentaire
Jingqi
Jingqi le 26 Fév 2024
NOTE: Results still remain different, even if the 'RangeWindow' is set to 'Non' in the first code.

Connectez-vous pour commenter.

Réponse acceptée

George
George le 27 Fév 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 commentaire
Jingqi
Jingqi le 27 Fév 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!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Detection, Range and Doppler Estimation dans Help Center et File Exchange

Produits


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by