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

FBMC_OQAM_Demodulator

PURPOSE ^

FBMC-OQAM demodulates received signal r.

SYNOPSIS ^

function [ z ] = FBMC_OQAM_Demodulator( r, Para)

DESCRIPTION ^

 FBMC-OQAM demodulates received signal r.

 function [ y ] = AFB( r, g, Para)

 Input arguments:

   r: received signal. Size: vector [Para.N_R, ~].

   Para: structure containing the modulation parameters.

 Outputs arguments:

   z: demodulated symbols at each subcarrier and multicarrier symbol.
   Size: matrix [Para.nSubcarriers, 2*(Para.Ns+Para.PreambleLength)] if Para.N_R ==
   1 or multidimensional arry [Para.N_R, Para.nSubcarriers,
   2*(Para.Ns+Para.PreambleLength)] if Para.N_R > 1

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [ z ] = FBMC_OQAM_Demodulator( r, Para)
0002 % FBMC-OQAM demodulates received signal r.
0003 %
0004 % function [ y ] = AFB( r, g, Para)
0005 %
0006 % Input arguments:
0007 %
0008 %   r: received signal. Size: vector [Para.N_R, ~].
0009 %
0010 %   Para: structure containing the modulation parameters.
0011 %
0012 % Outputs arguments:
0013 %
0014 %   z: demodulated symbols at each subcarrier and multicarrier symbol.
0015 %   Size: matrix [Para.nSubcarriers, 2*(Para.Ns+Para.PreambleLength)] if Para.N_R ==
0016 %   1 or multidimensional arry [Para.N_R, Para.nSubcarriers,
0017 %   2*(Para.Ns+Para.PreambleLength)] if Para.N_R > 1
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 
0027 [g, ~] = GeneratePrototypePhydyas(M, Para.kappa); % Prototype filter generation
0028 g=g.*sqrt(1/M);
0029 
0030 if Para.N_R==1
0031     YY=AFB(r,g,Para);
0032     theta=ones(2*M,2*(Para.Ns+Para.PreambleLength));
0033     theta(2:2:end,1:2:end)=1j;
0034     theta(1:2:end,2:2:end)=1j;
0035     z=YY.*conj(theta); % OQAM pattern (real-imaginary)
0036 else
0037     z=zeros(Para.N_R, 2*M, 2*(Para.Ns+Para.PreambleLength));
0038     for index_N_R=1:Para.N_R
0039         YY=AFB(r(index_N_R,:),g,Para);
0040         theta=ones(2*M,2*(Para.Ns+Para.PreambleLength));
0041         theta(2:2:end,1:2:end)=1j;
0042         theta(1:2:end,2:2:end)=1j;
0043         z(index_N_R,:,:)=YY.*conj(theta); % OQAM pattern (real-imaginary)
0044     end
0045 end
0046 
0047 
0048 
0049 end
0050

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