-function [rPhaseEq, phiests] = phaseNoiseCorr(r, M, blocksize)
+function [rPhaseEq, phiests] = phaseNoiseCorr(r, M, phoffset, blocksize)
%% phase noise correction
phiests = zeros(1, length(r));
rPhaseEq = zeros(1, length(r));
block = r(l : min(l + blocksize - 1, length(r)));
sum_M = sum(block .^ M);
- %% if phase of 0 symbol is 0, use:
- phi_est = angle(sum_M) / M;
- %% if phase of 0 symbol is pi/M, use:
- %% phi_est = angle(-sum_M) / M;
+ phi_est = angle(sum_M .* exp(j * M * phoffset)) / M;
if l > 1
%% phase unwrapping