📄 rx_phase_tracker.m
字号:
%Phase tracker, returns phase error corrected symbols
function corrected_syms = rx_phase_tracker(freq_data_syms, freq_pilot_syms, channel_est, sys_parm)
global ofdm_data_parm_var;
ofdm_data_parm_var.Index = 0;
if sys_parm.PilotPhaseTracking
correction_phases = zeros(size(freq_data_syms));
%Estimate the phase change using the pilots
for n = 1 : sys_parm.NumOFDMSymbols
update_ofdm_data_parm_var;
if ofdm_data_parm_var.HavePilot
correction_phases(n, :) = angle(sum(freq_pilot_syms(n, ofdm_data_parm_var.PilotSubcIdx) ./ channel_est(ofdm_data_parm_var.PilotSubcIdx) ...
./ ofdm_data_parm_var.PilotSymbol));
else
if n > 1
correction_phases(n, :) = correction_phases(n - 1, :);
end
end
end
%Correct symbol using the phase estimate of this one OFDM symbol
corrected_syms = exp(- j * correction_phases) .* freq_data_syms;
else
corrected_syms = freq_data_syms;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -