RDM dBm/bin 단위 PSD 도시 기능 추가
This commit is contained in:
@@ -13,13 +13,34 @@ function fig = visualize_rd_map_with_spurs(target_rd_map, r_axis, v_axis, Target
|
||||
% 출력:
|
||||
% - fig: 생성된 figure 핸들
|
||||
|
||||
if ~isfield(RadarParams, 'SP') || ~isfield(RadarParams.SP, 'RDM') || ...
|
||||
~isfield(RadarParams.SP.RDM, 'window_range') || ~isfield(RadarParams.SP.RDM, 'window_doppler')
|
||||
error('RadarParams.SP.RDM.window_range / window_doppler 정보가 필요합니다.');
|
||||
end
|
||||
|
||||
win_r = RadarParams.SP.RDM.window_range;
|
||||
win_d = RadarParams.SP.RDM.window_doppler;
|
||||
|
||||
normal_factor = RadarParams.Rxpath.fc_lpf * RadarParams.Waveform.PRF * sum(win_r.^2) * sum(win_d.^2);
|
||||
|
||||
if ~isfield(RadarParams, 'Rxpath') || ~isfield(RadarParams.Rxpath, 'load_impedance_ohm')
|
||||
error('RadarParams.Rxpath.load_impedance_ohm 값이 필요합니다.');
|
||||
end
|
||||
load_impedance_ohm = RadarParams.Rxpath.load_impedance_ohm;
|
||||
|
||||
psd2d_w_hz2 = (abs(target_rd_map).^2) / (load_impedance_ohm * max(normal_factor, eps));
|
||||
rbw_range_hz = RadarParams.Waveform.fs_adc * sum(win_r.^2) / max(eps, (sum(win_r)^2));
|
||||
rbw_doppler_hz = RadarParams.Waveform.PRF * sum(win_d.^2) / max(eps, (sum(win_d)^2));
|
||||
rd_map_dbm_bin = 10*log10(max(psd2d_w_hz2, realmin) / 1e-3) + 10*log10(max(rbw_range_hz * rbw_doppler_hz, eps));
|
||||
|
||||
fig = figure('Name', '2D Range-Doppler Map');
|
||||
imagesc(r_axis, v_axis, 20*log10(abs(target_rd_map)));
|
||||
imagesc(r_axis, v_axis, rd_map_dbm_bin);
|
||||
axis xy; % y축 방향(속도)을 위로 정렬
|
||||
colorbar;
|
||||
cb = colorbar;
|
||||
cb.Label.String = 'Power (dBm/bin)';
|
||||
xlabel('Range (m)');
|
||||
ylabel('Velocity (m/s)');
|
||||
title('Range-Doppler Map (Single Channel)');
|
||||
title('Range-Doppler Map (dBm/bin)');
|
||||
colormap(jet);
|
||||
|
||||
% 범례용 핸들 및 레이블 수집
|
||||
|
||||
Reference in New Issue
Block a user