Home > WaveComBox > Toolbox > FBMC_OQAM > Modulation > FBMC_OQAM_Modulator.m

FBMC_OQAM_Modulator

PURPOSE ^

FBMC-OQAM modulates symbols d.

SYNOPSIS ^

function [ s ] = FBMC_OQAM_Modulator( d, Para )

DESCRIPTION ^

 FBMC-OQAM modulates symbols d.

 function [ s ] = FBMC_OQAM_Modulator( d, Para )

 Input arguments:

   d: PAM symbols. Size: matrix [Para.nSubcarriers,
   2*(Para.Ns+Para.PreambleLength)] if Para.N_T == 1 or multidimensional
   arry [Para.N_T, Para.nSubcarriers, 2*(Para.Ns+Para.PreambleLength)] if Para.N_T
   > 1.

   Para: structure containing the modulation parameters.

 Outputs arguments:

   s: transmit signal. Size: matrix [Para.N_T, ~].

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [ s ] = FBMC_OQAM_Modulator( d, Para )
0002 % FBMC-OQAM modulates symbols d.
0003 %
0004 % function [ s ] = FBMC_OQAM_Modulator( d, Para )
0005 %
0006 % Input arguments:
0007 %
0008 %   d: PAM symbols. Size: matrix [Para.nSubcarriers,
0009 %   2*(Para.Ns+Para.PreambleLength)] if Para.N_T == 1 or multidimensional
0010 %   arry [Para.N_T, Para.nSubcarriers, 2*(Para.Ns+Para.PreambleLength)] if Para.N_T
0011 %   > 1.
0012 %
0013 %   Para: structure containing the modulation parameters.
0014 %
0015 % Outputs arguments:
0016 %
0017 %   s: transmit signal. Size: matrix [Para.N_T, ~].
0018 %
0019 
0020 % This file is part of WaveComBox: www.wavecombox.com and is distributed under the terms of the MIT license. See accompanying LICENSE file.
0021 % Original author: François Rottenberg, May 4, 2018.
0022 % Contributors:
0023 % Change log:
0024 
0025 M=Para.nSubcarriers/2;
0026 theta=ones(2*M,2*(Para.Ns+Para.PreambleLength));
0027 theta(2:2:end,1:2:end)=1j;
0028 theta(1:2:end,2:2:end)=1j;
0029 [p, ~] = GeneratePrototypePhydyas(M, Para.kappa); % Prototype filter generation
0030 p=p.*sqrt(1/M);
0031 
0032 
0033 if Para.N_T==1
0034     if length(d(:,1))~=2*M
0035        error('Variable "d" does not have the correct size') 
0036     end
0037     d_oqam=d.*theta; % OQAM pattern (real-imaginary)
0038     s=SFB( d_oqam, p, Para );
0039 else
0040     if length(d(:,1,1))~=Para.N_T
0041        error('Variable "d" does not have the correct size') 
0042     end
0043     s=zeros(Para.N_T,(2*(Para.Ns+Para.PreambleLength)+2*Para.kappa)*M);
0044     for index_N_T=1:Para.N_T
0045         d_oqam=squeeze(d(index_N_T,:,:)).*theta; % OQAM pattern (real-imaginary)
0046         s(index_N_T,:)=SFB(d_oqam, p, Para );
0047     end
0048 end
0049 
0050 
0051 end
0052

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