From 855c3d1d5548fcf606863d43e51dc64e833e478f Mon Sep 17 00:00:00 2001 From: YKG Date: Mon, 2 Mar 2026 15:06:38 +0900 Subject: [PATCH] =?UTF-8?q?Phase=20Noise=20=EC=83=9D=EC=84=B1=20=ED=99=9C?= =?UTF-8?q?=EC=84=B1=ED=99=94=20=ED=94=8C=EB=9E=98=EA=B7=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20datasheet=20=EC=A0=95=EB=B3=B4=EB=A5=BC?= =?UTF-8?q?=20=EC=9D=B4=EC=9A=A9=ED=95=9C=20phasenoise=EB=A5=BC=20?= =?UTF-8?q?=EC=9A=B0=EC=84=A0=20=EC=A0=81=EC=9A=A9=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03. Rx Path/apply_lna_and_mixer.m | 6 ++++-- 04. Signal Processing/visualize_rd_map_with_spurs.m | 7 +------ Main.m | 3 +-- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/03. Rx Path/apply_lna_and_mixer.m b/03. Rx Path/apply_lna_and_mixer.m index 1ee8d31..a35a94d 100644 --- a/03. Rx Path/apply_lna_and_mixer.m +++ b/03. Rx Path/apply_lna_and_mixer.m @@ -22,8 +22,10 @@ function [adc_raw_data, adc_combined] = apply_lna_and_mixer(RxOut, TxOut, RadarP phase_noise_cfg = struct(); if isfield(RadarParams.Waveform.nonideal, 'phaseNoise') phase_noise_cfg = RadarParams.Waveform.nonideal.phaseNoise; - if isfield(phase_noise_cfg,'enabled') && phase_noise_cfg.enabled && ... - isfield(phase_noise_cfg,'offset_Hz') && isfield(phase_noise_cfg,'level_dBc_Hz') + has_offset = isfield(phase_noise_cfg,'offset_Hz') && ~isempty(phase_noise_cfg.offset_Hz); + has_level = isfield(phase_noise_cfg,'level_dBc_Hz') && ~isempty(phase_noise_cfg.level_dBc_Hz); + same_length = has_offset && has_level && (numel(phase_noise_cfg.offset_Hz) == numel(phase_noise_cfg.level_dBc_Hz)); + if same_length use_datasheet_phase_noise = true; end end diff --git a/04. Signal Processing/visualize_rd_map_with_spurs.m b/04. Signal Processing/visualize_rd_map_with_spurs.m index ca38e09..982608f 100644 --- a/04. Signal Processing/visualize_rd_map_with_spurs.m +++ b/04. Signal Processing/visualize_rd_map_with_spurs.m @@ -61,7 +61,6 @@ function fig = visualize_rd_map_with_spurs(target_rd_map, r_axis, v_axis, Target ni = RadarParams.Waveform.nonideal; enable_phase_noise = false; enable_nonlinearity = false; - enable_datasheet_phase_noise = false; if isfield(ni,'enable_phase_noise') enable_phase_noise = logical(ni.enable_phase_noise); @@ -69,12 +68,8 @@ function fig = visualize_rd_map_with_spurs(target_rd_map, r_axis, v_axis, Target if isfield(ni,'enable_nonlinearity') enable_nonlinearity = logical(ni.enable_nonlinearity); end - if isfield(ni,'phaseNoise') && isstruct(ni.phaseNoise) && isfield(ni.phaseNoise,'enabled') - enable_datasheet_phase_noise = logical(ni.phaseNoise.enabled); - end - show_nonideal_overlay = show_nonideal_overlay && ... - (enable_phase_noise || enable_nonlinearity || enable_datasheet_phase_noise); + (enable_phase_noise || enable_nonlinearity); end % --- 2. LO/ADC 톤 스퍼 표시 --- diff --git a/Main.m b/Main.m index 1800d75..5e269f3 100644 --- a/Main.m +++ b/Main.m @@ -42,12 +42,11 @@ RadarParams.Waveform.nonideal.pn_level = 0.05; % 위상노이즈 RadarParams.Waveform.nonideal.f_ripple = 300e3; % 위상 리플 주파수 RadarParams.Waveform.nonideal.peak_phase_error = 0.1; % 최대 위상오차 RadarParams.Waveform.nonideal.power_drop_edge = 0.8; % 엣지 파워 드롭 -RadarParams.Waveform.nonideal.enable_phase_noise = false; % phase noise on/off +RadarParams.Waveform.nonideal.enable_phase_noise = true; % phase noise on/off RadarParams.Waveform.nonideal.enable_nonlinearity = false; % nonlinearity on/off % Datasheet 기반 phase noise 설정 (예: -89 dBc/Hz @ 1 MHz) RadarParams.Waveform.nonideal.phaseNoise.offset_Hz = [1e6]; RadarParams.Waveform.nonideal.phaseNoise.level_dBc_Hz = [-89]; -RadarParams.Waveform.nonideal.phaseNoise.enabled = false; % 2-3) MIMO 모드 설정 RadarParams.Waveform.mimoMode = 'TDM'; % 'TDM' 또는 'DDMA'