FMCW radar range estimation differences between phased.RangeResponse and fft

4 ビュー (過去 30 日間)
Jingqi
Jingqi 2024 年 2 月 26 日
コメント済み: Jingqi 2024 年 2 月 27 日
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 件のコメント
Jingqi
Jingqi 2024 年 2 月 26 日
NOTE: Results still remain different, even if the 'RangeWindow' is set to 'Non' in the first code.

サインインしてコメントする。

採用された回答

George
George 2024 年 2 月 27 日
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 件のコメント
Jingqi
Jingqi 2024 年 2 月 27 日
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!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDetection, Range and Doppler Estimation についてさらに検索

製品


リリース

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by