Home > WaveComBox > Toolbox > F_OFDM > Modulation > F_OFDM_Modulator.m

F_OFDM_Modulator

PURPOSE ^

F_OFDM_Modulator modulates data symbols using the f-OFDM modulation [1,2].

SYNOPSIS ^

function [ s ] = F_OFDM_Modulator( d, Para )

DESCRIPTION ^

 F_OFDM_Modulator modulates data symbols using the f-OFDM modulation [1,2].

 function [ s ] = F_OFDM_Modulator( d, Para )

 The function works for SISO systems only.

 Input arguments:

   d: data symbols (possibly pre-equalized). Size: matrix [Para.nSubcarriers, Ns] if Para.N_T == 1,
   multidimensional array [para.N_T, Para.nSubcarriers, Ns] if Para.N_T > 1.  

   Para: structure containing the modulation parameters.

 Outputs arguments:

   s: transmitted signal. Size: matrix [Para.N_T,
   (Para.nSubcarriers+CP_L)*(Para.Ns)+Para.L-1]

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [ s ] = F_OFDM_Modulator( d, Para )
0002 % F_OFDM_Modulator modulates data symbols using the f-OFDM modulation [1,2].
0003 %
0004 % function [ s ] = F_OFDM_Modulator( d, Para )
0005 %
0006 % The function works for SISO systems only.
0007 %
0008 % Input arguments:
0009 %
0010 %   d: data symbols (possibly pre-equalized). Size: matrix [Para.nSubcarriers, Ns] if Para.N_T == 1,
0011 %   multidimensional array [para.N_T, Para.nSubcarriers, Ns] if Para.N_T > 1.
0012 %
0013 %   Para: structure containing the modulation parameters.
0014 %
0015 % Outputs arguments:
0016 %
0017 %   s: transmitted signal. Size: matrix [Para.N_T,
0018 %   (Para.nSubcarriers+CP_L)*(Para.Ns)+Para.L-1]
0019 
0020 
0021 % This file is part of Wavecom: www.wavecom.org and is distributed under the terms of the MIT license. See accompanying LICENSE file.
0022 % Original author: Mathieu Van Eeckhaute, September 26, 2018.
0023 % Contributors:
0024 % Change log:
0025 
0026 %References:
0027 %   [1] 3GPP R1-165425 'f-OFDM scheme and filter design'
0028 %   [2] 3GPP R1-166999 'Detailed configuration of f-OFDM and W-OFDM for LLS evaluation'
0029 
0030 %generate prototype filter
0031 proto_filt = F_OFDM_protofilter_design(Para);
0032 %modulate prototype filter around centre frequency of each subband;
0033 modulated_filters = F_OFDM_modulate_proto_filt(proto_filt, Para);
0034 
0035 CP_L = Para.CP*Para.nSubcarriers;
0036 data = d(Para.ActiveSubcarriers, :);
0037 if Para.N_T==1
0038     s = 0;%initialise Tx signal
0039     for iSubBand = 1:Para.NsubBands
0040         %sub-band separation
0041         subBandSymbs = data((iSubBand-1)*Para.SubBandWidth+1:iSubBand*Para.SubBandWidth,:); %Sub-band symbol
0042         IFT_in = zeros(Para.nSubcarriers, Para.Ns);
0043         IFT_in(Para.SubBandSCset(:, iSubBand), :) = subBandSymbs;
0044         IFT = Para.nSubcarriers/sqrt(Para.nSubcarriers+CP_L)*ifft(IFT_in, Para.nSubcarriers, 1);
0045         IFT_CP = [IFT(end-CP_L+1:end, :); IFT];%CP addition
0046         filt_in = IFT_CP(:); %P/S
0047         filt_sig = conv(filt_in, modulated_filters(:, iSubBand));
0048         s = s + filt_sig.';
0049         
0050     end
0051     
0052 else
0053     error('MIMO not implemented')
0054 end
0055 
0056 end
0057

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