Hello everyone,

I'm having troubles with SFO estimation and its correction on Speth algorithm,
since I don't get correct estimated values neither in AWGN nor in ideal case.

Basically, I add SFO to OFDM signal through interpolation in time domain. Then
trying to estimate with following code:

temp_pilots_rx=[pos_pilot_symbols_rx_neg; 0; pos_pilot_symbols_rx_pos;]; %
separate negative & positive pilots

temp_split_position=find((temp_pilots_rx==0));

Zt_pilots(pilot_positions,k).*conj(fft_pilots(pilot_positions,k-1)); % k is the
last OFDM symbol; calulates rotation in frequency domain

sum_pos_neg= sum(Z(temp_pilots_rx(1:temp_split_position-1)));

sum_pos_pos= sum(Z(temp_pilots_rx(temp_split_position+1:end)));

phi_1= angle(sum_pos_neg);

phi_2= angle(sum_pos_pos);

f_SFO_estimated= 1/ 2 / pi *f_sampling * t_u * 1 /
(min(real(Z(temp_pilots_rx(temp_split_position+1:end))))+
max(real(Z(temp_pilots_rx(temp_split_position+1:end)))))*( phi_2 - phi_1) % t_u
useful data portion

Afterwards I tried either back rotating the subcarriers or interpolating in time
to compensate the signal, but up to now with no great luck. Even without
compensation and no AWGN, I don't get the artificial added SFO i.e the problem
is somewhere in the implementation.

Does any one of you see a problem in the above impementation or idea what else
still have to be considered?

# Sampling frequency offset correction & estimation Speth et al.

Started by ●February 27, 2011