Home > WaveComBox > Example > FBMC_OQAM > PhaseNoiseTracking.m

PhaseNoiseTracking

PURPOSE ^

Phase noise compensation for a SISO FBMC-OQAM system

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 Phase noise compensation for a SISO FBMC-OQAM system

 Example simulating phase noise and its compensation on a SISO FBMC-OQAM
 system using two different tracking algorithms.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % Phase noise compensation for a SISO FBMC-OQAM system
0002 %
0003 % Example simulating phase noise and its compensation on a SISO FBMC-OQAM
0004 % system using two different tracking algorithms.
0005 
0006 % This file is part of WaveComBox: www.wavecombox.com and is distributed under
0007 % the terms of the MIT license. See accompanying LICENSE file.
0008 % Original author: François Rottenberg, May 8, 2018.
0009 % Contributors:
0010 % Change log:
0011 close all
0012 
0013 % Definition of general Parameters
0014 Para=InitializeChainParameters( 'FBMC-OQAM' ) % initialize parameters of the FBMC-OQAM chain
0015 Para.ActiveSubcarriers= 5:Para.nSubcarriers;
0016 Para.Ns=1000;
0017 T_s=1/30e9;
0018 Para.T=T_s*Para.nSubcarriers;
0019 
0020 
0021 % Transmitter
0022 d = GenerateData (Para); % Generate data symbols
0023 s = Modulator(d, Para ); % FBMC-OQAM modulation
0024 
0025 % Channel
0026 % c=1; % Ideal channel
0027 PN_linewidth   = 200*1e3; % Hz
0028 r = Channel_PhaseNoise(s,PN_linewidth,Para); % add phase noise
0029 r=Channel_AWGN( r, Para ); % AWGN channel, SNR fixed in Para
0030 
0031 % Receiver
0032 z = Demodulator( r, Para ); % FBMC-OQAM demodulation
0033 
0034 figure
0035 xlabel('Real muticarrier symbol index')
0036 ylabel('Phase noise [rad]')
0037 hold all
0038 % ML tracker
0039 [x, phi]=PhaseTracker( z, Para, 'ML' );
0040 d_hat=real(x);
0041 NMSE_dB_ML = 10*log10(mean(2*Para.Es*MSEComputes( d, d_hat, Para )))
0042 plot(phi)
0043 % MBPS tracker
0044 [x, phi]=PhaseTracker( z, Para, 'MBPS' );
0045 d_hat=real(x);
0046 % Compute the theoretical and simulated MSE
0047 NMSE_dB_MBPS = 10*log10(mean(2*Para.Es*MSEComputes( d, d_hat, Para )))
0048 plot(phi,'r')
0049

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