function quantized_data = apply_adc_quantization(adc_raw_data, n_bits, v_full_scale, mode) % 입력: % - adc_raw_data: HPF/LPF가 적용된 복소 비트 신호 (Voltage Scale) % - n_bits: ADC 비트 수 % - v_full_scale: ADC Peak-to-Peak 전압 범위 (e.g., 2.0V) % - mode: 'IQ' (Complex 출력) 또는 'Real' (Real 출력) v_max = v_full_scale / 2; lsb = v_full_scale / (2^n_bits); if strcmpi(mode, 'IQ') % --- Case 1: I/Q Demodulation (Complex) --- % I채널과 Q채널 각각 독립적으로 Clipping 및 Quantization 진행 r_part = real(adc_raw_data); i_part = imag(adc_raw_data); r_part = max(min(r_part, v_max), -v_max); i_part = max(min(i_part, v_max), -v_max); q_r = round(r_part / lsb) * lsb; q_i = round(i_part / lsb) * lsb; quantized_data = q_r + 1j * q_i; elseif strcmpi(mode, 'Real') % --- Case 2: Real Demodulation --- % 복소 신호의 실수부(I채널)만 취하여 ADC 처리 % 실제 하드웨어에서는 믹서에서 허수 성분이 아예 생성되지 않음 r_part = real(adc_raw_data); r_part = max(min(r_part, v_max), -v_max); q_r = round(r_part / lsb) * lsb; % 결과는 실수(Real) 행렬 quantized_data = q_r; else error('모드는 IQ 또는 Real 중 하나를 선택해야 합니다.'); end end