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

FBMC_OQAM_GeneratePreamble

PURPOSE ^

Generates an FBMC-OQAM preamble.

SYNOPSIS ^

function [ d_preamble ] = FBMC_OQAM_GeneratePreamble(d_TR, Para, preamble_type)

DESCRIPTION ^

 Generates an FBMC-OQAM preamble.

 function [ d_preamble ] = FBMC_OQAM_GeneratePreamble(d_TR, Para)

 The function works for SISO and some MIMO systems.

 Input arguments:

   d_TR: vector [Para.nSubcarriers, 1] of pilot symbols.

   Para: structure containing the modulation parameters.

   preamble_type: optional, type of preamble, 'synchro' or
   'channel_estimation' (by default).

 Outputs arguments:

   d_preamble: preamble symbols. Size: matrix [Para.nSubcarriers,
   2*Para.PreambleLength] if Para.N_T == 1 and multidimensional array
   [Para.N_T, Para.nSubcarriers, 2*Para.PreambleLength] otherwise

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [ d_preamble ] = FBMC_OQAM_GeneratePreamble(d_TR, Para, preamble_type)
0002 % Generates an FBMC-OQAM preamble.
0003 %
0004 % function [ d_preamble ] = FBMC_OQAM_GeneratePreamble(d_TR, Para)
0005 %
0006 % The function works for SISO and some MIMO systems.
0007 %
0008 % Input arguments:
0009 %
0010 %   d_TR: vector [Para.nSubcarriers, 1] of pilot symbols.
0011 %
0012 %   Para: structure containing the modulation parameters.
0013 %
0014 %   preamble_type: optional, type of preamble, 'synchro' or
0015 %   'channel_estimation' (by default).
0016 %
0017 % Outputs arguments:
0018 %
0019 %   d_preamble: preamble symbols. Size: matrix [Para.nSubcarriers,
0020 %   2*Para.PreambleLength] if Para.N_T == 1 and multidimensional array
0021 %   [Para.N_T, Para.nSubcarriers, 2*Para.PreambleLength] otherwise
0022 %
0023 
0024 
0025 % This file is part of WaveComBox: www.wavecombox.com and is distributed under the terms of the MIT license. See accompanying LICENSE file.
0026 % Original author: François Rottenberg, June 29, 2018.
0027 % Contributors:
0028 % Change log:
0029 %   François Rottenberg, November 1, 2018.
0030 %   Addition of the 'synchro' option for MIMO preamble
0031 
0032 M=Para.nSubcarriers/2;
0033 
0034 d_preamble=zeros(Para.N_T,2*M,2*Para.PreambleLength);
0035 F_pilot=1/sqrt(Para.N_T)*exp(-1j*2*pi/Para.N_T*(0:Para.N_T-1)'*(0:Para.N_T-1)  );
0036 
0037 if exist('preamble_type','var')==0
0038     preamble_type='channel_estimation';
0039 end
0040 
0041 switch preamble_type
0042     case 'synchro'
0043         for m=Para.PreamblePilotSubcarriers
0044             d_preamble(:,m,1)=F_pilot(:,1)*d_TR(m);
0045         end
0046         for m=Para.PreamblePilotSubcarriers
0047             d_preamble(:,m,2+1:2:2+2*Para.N_T)=d_TR(m)*F_pilot;
0048         end
0049         
0050     case 'channel_estimation'
0051         for m=Para.PreamblePilotSubcarriers
0052             d_preamble(:,m,1:2:2*Para.N_T)=d_TR(m)*F_pilot;
0053         end
0054     otherwise
0055         error('Preamble type not defined')
0056 end
0057 
0058 if Para.N_T==1
0059    d_preamble=squeeze(d_preamble); 
0060 end
0061 
0062 end
0063

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