rx_phase_tracker.m
来自「ofdm系统仿真」· M 代码 · 共 31 行
M
31 行
%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 + =
减小字号Ctrl + -
显示快捷键?