Initial ARSS. Need to improve and add functions.

This commit is contained in:
2026-03-02 14:48:21 +09:00
commit 775668afdb
20 changed files with 1610 additions and 0 deletions
@@ -0,0 +1,45 @@
function [rd_map, doppler_axis] = process_doppler_fft(range_profile, RadarParams)
% :
% - range_profile: [NumRx, NumTx, NumChirps, NumRangeBins]
% - RadarParams:
NumChirps = RadarParams.Waveform.NumChirps;
window_type = RadarParams.SP.RDM.window_type_doppler;
[~, ~, ~, ~] = size(range_profile);
%
lambda = RadarParams.Waveform.lambda_c; % = c/fc
% 1. (PRI, Pulse Repetition Interval)
T_pri = RadarParams.Waveform.PRI;
% 2. Doppler-FFT용 ( )
% (3 ) .
if strcmpi(window_type, 'none')
win_doppler = ones(1, NumChirps);
elseif strcmpi(window_type, 'hamming')
win_doppler = hamming(NumChirps)';
elseif strcmpi(window_type, 'blackman')
win_doppler = blackman(NumChirps)';
elseif strcmpi(window_type, 'hann')
win_doppler = hann(NumChirps)';
else % default: 'chebwin'
win_doppler = chebwin(NumChirps, 60)'; % 60dB
end
win_data = range_profile .* reshape(win_doppler, [1, 1, NumChirps, 1]);
% 3. Doppler-FFT (3 : Chirp)
% NFFT를 NumChirps보다 .
rd_fft = fft(win_data, NumChirps, 3);
% 4. fftshift ( 0 )
% [-, 0, +] .
rd_map = fftshift(rd_fft, 3);
% 5. (Velocity Axis)
% Vmax = lambda / (4 * T_pri)
v_max = lambda / (4 * T_pri);
% dv = lambda / (2 * NumChirps * T_pri)
doppler_axis = linspace(-v_max, v_max, NumChirps);
end