Initial ARSS. Need to improve and add functions.
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
function filtered_data = apply_analog_hpf(adc_raw_data, fs_adc, fc_hpf_Hz)
|
||||
% 입력:
|
||||
% - adc_raw_data: [NumRx, NumTx, NumChirps, N_samples] 복소 데이터
|
||||
% - fs_adc: ADC 샘플링 주파수 (Hz)
|
||||
% - fc_hpf_Hz: HPF 차단 주파수 (Cut-off Frequency, Hz)
|
||||
|
||||
[NumRx, NumTx, NumChirps, N_samples] = size(adc_raw_data);
|
||||
filtered_data = zeros(size(adc_raw_data));
|
||||
|
||||
% 1. 1차 아날로그 HPF 설계 (S-plane -> Z-plane 변환)
|
||||
% Analog Transfer Function: H(s) = s / (s + omega_c)
|
||||
omega_c = 2 * pi * fc_hpf_Hz;
|
||||
|
||||
% 쌍선형 변환(Bilinear Transform)을 이용한 디지털 필터 계수 산출
|
||||
% [b, a] = butter(1, fc_hpf_Hz / (fs_adc/2), 'high'); % 또는 아래와 같이 직접 계산
|
||||
T = 1 / fs_adc;
|
||||
alpha = 2 / T;
|
||||
|
||||
b0 = alpha / (alpha + omega_c);
|
||||
b1 = -alpha / (alpha + omega_c);
|
||||
a1 = (omega_c - alpha) / (alpha + omega_c);
|
||||
|
||||
b = [b0, b1];
|
||||
a = [1, a1];
|
||||
|
||||
% 2. 모든 채널 및 처프에 대해 필터 적용
|
||||
for rx = 1:NumRx
|
||||
for tx = 1:NumTx
|
||||
for m = 1:NumChirps
|
||||
% 각 샘플 시퀀스 추출
|
||||
raw_sig = squeeze(adc_raw_data(rx, tx, m, :));
|
||||
|
||||
% 필터 적용 (초기 과도 응답을 최소화하기 위해 'filtfilt' 대신 'filter' 사용)
|
||||
% 실시간 시스템의 특성을 모사하기 위해 인과적(Causal) 필터인 filter 함수 사용
|
||||
filtered_data(rx, tx, m, :) = filter(b, a, raw_sig);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user