Filter löschen
Filter löschen

FMCW radar range estimation differences between phased.RangeResponse and fft

6 Ansichten (letzte 30 Tage)
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 Kommentar
Jingqi
Jingqi am 26 Feb. 2024
NOTE: Results still remain different, even if the 'RangeWindow' is set to 'Non' in the first code.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

George
George am 27 Feb. 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 Kommentar
Jingqi
Jingqi am 27 Feb. 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!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by