Home > WaveComBox > Toolbox > Receiver > PhaseTracker.m

PhaseTracker

PURPOSE ^

Tracks and corrects phase noise

SYNOPSIS ^

function [ x, phi ] = PhaseTracker( z, ParaModulation, TrackerType, ParaTracker )

DESCRIPTION ^

 Tracks and corrects phase noise

 function [ x, B ] = PhaseTracker( z, ParaModulation, TrackerType )
 function [ x, B ] = PhaseTracker( z, ParaModulation, TrackerType, ParaTracker )

 The function works for SISO systems. See the help related to the specific
 tracker functions called by the present parent function.

 Input arguments:

   z: demodulated OFDM symbols. Size: matrix [2*Para.M, ~]

   ParaModulation: structure containing the modulation parameters.

   TrackerType: mandatory, determines the type of Tracker to use. to
   compute and use. Several options are possible, depending on the
   modulation.

       'ML': maximum likelihood (only for FBMC-OQAM).

       'MAP': maximum a posteriori (only for FBMC-OQAM).

       'AML': adaptive maximum likelihood (only for FBMC-OQAM).

       'M-BPS': modified blind phase search (only for FBMC-OQAM).

   ParaTracker: structure containing parameters of the tracker.
   Depending on the tracker type, the structure may contain optional
   arguments (set to default values) and/or mandatory arguments:

       ParaTracker.linewidth: optional (by default set to zero), combined
       linewidth of transmit and receive lasers, useful for 'MAP' tracker.

       ParaTracker.B: optional (by default set to 24), number of phase
       tests for the MBPS algorithm.

       ParaTracker.PhaseAmbiguityCompensation: optional (by default set to
       1), phase ambiguity compensation for the MBPS algorithm.

 Ouput arguments:

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

   phi: estimated phase. Size: vector [2*Para.Ns, 1].

 See also FBMC_OQAM_PhaseTrackerMLMAP, FBMC_OQAM_PhaseTrackerAML,
 FBMC_OQAM_PhaseTrackerMBPS.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [ x, phi ] = PhaseTracker( z, ParaModulation, TrackerType, ParaTracker )
0002 % Tracks and corrects phase noise
0003 %
0004 % function [ x, B ] = PhaseTracker( z, ParaModulation, TrackerType )
0005 % function [ x, B ] = PhaseTracker( z, ParaModulation, TrackerType, ParaTracker )
0006 %
0007 % The function works for SISO systems. See the help related to the specific
0008 % tracker functions called by the present parent function.
0009 %
0010 % Input arguments:
0011 %
0012 %   z: demodulated OFDM symbols. Size: matrix [2*Para.M, ~]
0013 %
0014 %   ParaModulation: structure containing the modulation parameters.
0015 %
0016 %   TrackerType: mandatory, determines the type of Tracker to use. to
0017 %   compute and use. Several options are possible, depending on the
0018 %   modulation.
0019 %
0020 %       'ML': maximum likelihood (only for FBMC-OQAM).
0021 %
0022 %       'MAP': maximum a posteriori (only for FBMC-OQAM).
0023 %
0024 %       'AML': adaptive maximum likelihood (only for FBMC-OQAM).
0025 %
0026 %       'M-BPS': modified blind phase search (only for FBMC-OQAM).
0027 %
0028 %   ParaTracker: structure containing parameters of the tracker.
0029 %   Depending on the tracker type, the structure may contain optional
0030 %   arguments (set to default values) and/or mandatory arguments:
0031 %
0032 %       ParaTracker.linewidth: optional (by default set to zero), combined
0033 %       linewidth of transmit and receive lasers, useful for 'MAP' tracker.
0034 %
0035 %       ParaTracker.B: optional (by default set to 24), number of phase
0036 %       tests for the MBPS algorithm.
0037 %
0038 %       ParaTracker.PhaseAmbiguityCompensation: optional (by default set to
0039 %       1), phase ambiguity compensation for the MBPS algorithm.
0040 %
0041 % Ouput arguments:
0042 %
0043 %   x: equalized symbols. Size: matrix [2*Para.M, 2*Para.Ns].
0044 %
0045 %   phi: estimated phase. Size: vector [2*Para.Ns, 1].
0046 %
0047 % See also FBMC_OQAM_PhaseTrackerMLMAP, FBMC_OQAM_PhaseTrackerAML,
0048 % FBMC_OQAM_PhaseTrackerMBPS.
0049 
0050 % This file is part of WaveComBox: www.wavecombox.com and is distributed under
0051 % the terms of the MIT license. See accompanying LICENSE file.
0052 % Original author: François Rottenberg, June 19, 2018.
0053 % Contributors: T.-H. Nguyen, May 22th, 2018.
0054 % Change log:
0055 
0056 ParaTracker.a=[];
0057 if exist ('TrackerType','var')==0
0058    TrackerType='ML'; 
0059 end
0060 
0061 switch ParaModulation.Modulation
0062     case 'FBMC-OQAM'
0063         switch TrackerType
0064             case 'ML'
0065                 [x, phi]=FBMC_OQAM_PhaseTrackerMLMAP( z, 0, 'ML', ParaModulation );
0066             case 'MAP'
0067                 if isfield(ParaTracker,'linewidth')==0
0068                     ParaTracker.linewidth=0;
0069                 end
0070                 [x, phi]=FBMC_OQAM_PhaseTrackerMLMAP( z, ParaTracker.linewidth, 'MAP', ParaModulation );
0071             case 'AML'
0072                 [x, phi]=FBMC_OQAM_PhaseTrackerAML( z, ParaModulation );
0073             case 'MBPS'
0074                 if isfield(ParaTracker,'B')==0
0075                     ParaTracker.B=24;
0076                 end
0077                 if isfield(ParaTracker,'PhaseAmbiguityCompensation')==0
0078                     ParaTracker.PhaseAmbiguityCompensation=1;
0079                 end
0080                 [x, phi]=FBMC_OQAM_PhaseTrackerMBPS( z, ParaModulation, ParaTracker.B, ParaTracker.PhaseAmbiguityCompensation );
0081             otherwise
0082                 error('Equalizer type not defined for FBMC-OQAM modulation')
0083         end
0084     otherwise
0085         error('Tracker not implemented for this modulation')
0086 end
0087 
0088 
0089 end
0090

Generated on Mon 24-Jun-2019 13:51:48 by m2html © 2005