Home > WaveComBox > Toolbox > FBMC_OQAM > PhaseTracking > FBMC_OQAM_PhaseTrackerAML.m

FBMC_OQAM_PhaseTrackerAML

PURPOSE ^

Tracks and corrects phase noise following adaptive ML described in [1].

SYNOPSIS ^

function [x, phi]=FBMC_OQAM_PhaseTrackerAML( z, Para )

DESCRIPTION ^

 Tracks and corrects phase noise following adaptive ML described in [1].

 function [x, phi]=FBMC_OQAM_PhaseTrackerAML( z, linewidth, type, Para )

 The function works for SISO systems.

 Input arguments:

   z: demodulated FBMC-OQAM symbols. Size: matrix [2*Para.M,2*Para.Ns]

   linewidth: phase noise linewidth [Hz]

   Para: structure containing the modulation parameters.

 Ouput arguments:

   x: equalized symbols. Size: matrix [2*Para.M, 2*Para.Ns].   

   phi: estimated phase. Size: vector [2*Para.Ns, 1].
   
 References: [1] T.-H. Nguyen, F. Rottenberg, S.-P. Gorza, J. Louveaux
   and F. Horlin, "Efficient Chromatic Dispersion Compensation and Carrier
   Phase Tracking for Optical Fiber FBMC/OQAM Systems," J. Lightw.
   Technol., vol. 35, no. 14, pp. 2909-2916, Jul. 2017.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [x, phi]=FBMC_OQAM_PhaseTrackerAML( z, Para )
0002 % Tracks and corrects phase noise following adaptive ML described in [1].
0003 %
0004 % function [x, phi]=FBMC_OQAM_PhaseTrackerAML( z, linewidth, type, Para )
0005 %
0006 % The function works for SISO systems.
0007 %
0008 % Input arguments:
0009 %
0010 %   z: demodulated FBMC-OQAM symbols. Size: matrix [2*Para.M,2*Para.Ns]
0011 %
0012 %   linewidth: phase noise linewidth [Hz]
0013 %
0014 %   Para: structure containing the modulation parameters.
0015 %
0016 % Ouput arguments:
0017 %
0018 %   x: equalized symbols. Size: matrix [2*Para.M, 2*Para.Ns].
0019 %
0020 %   phi: estimated phase. Size: vector [2*Para.Ns, 1].
0021 %
0022 % References: [1] T.-H. Nguyen, F. Rottenberg, S.-P. Gorza, J. Louveaux
0023 %   and F. Horlin, "Efficient Chromatic Dispersion Compensation and Carrier
0024 %   Phase Tracking for Optical Fiber FBMC/OQAM Systems," J. Lightw.
0025 %   Technol., vol. 35, no. 14, pp. 2909-2916, Jul. 2017.
0026 %
0027 
0028 % This file is part of WaveComBox: www.wavecombox.com and is distributed under the terms of the MIT license. See accompanying LICENSE file.
0029 % Original author: T.-H. Nguyen, May 22, 2018.
0030 % Contributors: François Rottenberg, June 20, 2018.
0031 % Change log:
0032 
0033 M=Para.nSubcarriers/2;
0034 Ns=Para.Ns;
0035 M_PAM=Para.M_PAM;
0036 mod_norm=sqrt(Para.Es/2/(1./Para.M_PAM.*sum(abs(pammod([0:Para.M_PAM-1],Para.M_PAM)).^2)));
0037 
0038 G  = 0.009; % Weighting factor for AML, optimized depending on the Ns, linewidth
0039 
0040 phi=zeros(2*Ns,1);
0041 phi_l_1=0;
0042 if Para.N_R==1 && Para.N_T==1    
0043     x=zeros(2*M,2*Ns);
0044     for l=1:2*Ns        
0045         z_tilde=exp(-1j*phi_l_1).*z(:,l);
0046         temp=real(z_tilde);
0047         d_hard_decision=pammod(pamdemod(temp/mod_norm,M_PAM),M_PAM).*mod_norm;
0048         
0049         term1 = real(z_tilde).*(-sin(phi_l_1)) + imag(z_tilde).*cos(phi_l_1);
0050         term2 = real(z_tilde).*(cos(phi_l_1)) + imag(z_tilde).*sin(phi_l_1);
0051         term3 = d_hard_decision.*term1;
0052         errorterm = sum(-(term1.*term2) + (term3));
0053         epsilon = G * errorterm;
0054         
0055         phi_l=phi_l_1+epsilon;
0056         phi_l_1=phi_l;
0057         phi(l)=phi_l;
0058         x(:,l)=exp(-1j*phi(l)).*z(:,l);
0059     end
0060     
0061 else
0062     error('Function not implemented for N_T>1, N_R>1')
0063 end
0064 
0065 end
0066

Generated on Mon 14-Oct-2019 13:48:34 by m2html © 2005