Home > WaveComBox > Toolbox > FBMC_OQAM > ChannelEstimation > FBMC_OQAM_InsertScattteredPilot.m

FBMC_OQAM_InsertScattteredPilot

PURPOSE ^

Inserts scattered pilot and auxiliary pilot symbols in the FBMC-OQAM frame.

SYNOPSIS ^

function d_data_pilot=FBMC_OQAM_InsertScattteredPilot(d_data,Para)

DESCRIPTION ^

 Inserts scattered pilot and auxiliary pilot symbols in the FBMC-OQAM frame.

 function d_data_pilot=FBMC_OQAM_InsertScattteredPilot(d_data,Para)

 The function works for SISO systems.

 Input arguments:

   d_data: matrix [Para.nSubcarriers, 2*Para.Ns] containing data symbols. 

   Para: structure containing the modulation parameters.

 Outputs arguments:

   d_data_pilot: matrix [Para.nSubcarriers, 2*Para.Ns] containing data and pilots symbols.  

 References: 
 [1] J. P. Javaudin, D. Lacroix, and A. Rouxel, "Pilot-aided channel
 estimation for OFDM/OQAM," in The 57th IEEE Semiannual Vehicular
 Technology Conference, 2003., vol. 3, pp. 1581–1585 vol.3, April 2003.
 [2] T. Stitz, T. Ihalainen, A. Viholainen, and M. Renfors, "Pilot-based
 synchronization and equalization in filter bank multicarrier
 communications," EURASIP Journal on Advances in Signal Processing, vol.
 2010, p. 741429, Feb 2010.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function d_data_pilot=FBMC_OQAM_InsertScattteredPilot(d_data,Para)
0002 % Inserts scattered pilot and auxiliary pilot symbols in the FBMC-OQAM frame.
0003 %
0004 % function d_data_pilot=FBMC_OQAM_InsertScattteredPilot(d_data,Para)
0005 %
0006 % The function works for SISO systems.
0007 %
0008 % Input arguments:
0009 %
0010 %   d_data: matrix [Para.nSubcarriers, 2*Para.Ns] containing data symbols.
0011 %
0012 %   Para: structure containing the modulation parameters.
0013 %
0014 % Outputs arguments:
0015 %
0016 %   d_data_pilot: matrix [Para.nSubcarriers, 2*Para.Ns] containing data and pilots symbols.
0017 %
0018 % References:
0019 % [1] J. P. Javaudin, D. Lacroix, and A. Rouxel, "Pilot-aided channel
0020 % estimation for OFDM/OQAM," in The 57th IEEE Semiannual Vehicular
0021 % Technology Conference, 2003., vol. 3, pp. 1581–1585 vol.3, April 2003.
0022 % [2] T. Stitz, T. Ihalainen, A. Viholainen, and M. Renfors, "Pilot-based
0023 % synchronization and equalization in filter bank multicarrier
0024 % communications," EURASIP Journal on Advances in Signal Processing, vol.
0025 % 2010, p. 741429, Feb 2010.
0026 
0027 % This file is part of WaveComBox: www.wavecombox.com and is distributed under the terms of the MIT license. See accompanying LICENSE file.
0028 % Original author: François Rottenberg, May 9, 2018.
0029 % Contributors:
0030 % Change log:
0031 
0032 d_data_pilot=d_data;
0033 M=Para.nSubcarriers/2;
0034 
0035 theta=ones(2*M,2*Para.Ns);
0036 theta(2:2:end,1:2:end)=1j;
0037 theta(1:2:end,2:2:end)=1j;
0038 
0039 if Para.N_T==1
0040     d_data_pilot(Para.ScatteredPilotSubcarriers, Para.ScatteredPilotSymbols)=0;
0041     d_data_pilot(Para.ScatteredPilotSubcarriers, Para.ScatteredPilotSymbols+1)=0;
0042     for m=Para.ScatteredPilotSubcarriers
0043         for l=Para.ScatteredPilotSymbols
0044             m_0=m-1;
0045             l_0=l-1;
0046             
0047             pilotPos=[m_0,l_0];
0048             auxPilotPos=[m_0,l_0+1];
0049             d_data_pilot(pilotPos(1)+1,pilotPos(2)+1)=1;
0050             d_data_pilot(auxPilotPos(1)+1,auxPilotPos(2)+1)=0;
0051             
0052             La=Para.kappa;
0053             F=3*(2*La-1);
0054             d_S=zeros(F,1);
0055             set_S=zeros(F,2);
0056             for index=1:F
0057                 m_temp=m_0-1+floor((index-1)/(2*La-1));
0058                 l_temp=l_0+1-(La)+mod(index-1,2*La-1);
0059                 if l_temp<Para.ScatteredPilotSymbols(end)
0060                     set_S(index,:)=[m_temp, l_temp];
0061                     d_S(index)=d_data_pilot(m_temp+1, l_temp+1);
0062                 end
0063             end
0064             t_P=ComputeTransmuxCoefficient( auxPilotPos, m_0, l_0, theta, Para ); % t_P computation
0065             t_S=ComputeTransmuxCoefficient( set_S, m_0, l_0, theta, Para ); % t_S computation
0066             
0067             d_data_pilot(auxPilotPos(1)+1,auxPilotPos(2)+1)=real((1-t_S*d_S)/t_P);
0068             d_data_pilot(pilotPos(1)+1,pilotPos(2)+1)=sqrt(Para.Ep/2)*(randi([0 1])*2-1);
0069         end
0070     end
0071 else
0072     error('Function not yet implemented for MIMO')
0073 
0074 end
0075

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