Home > WaveComBox > Toolbox > UFMC > Modulation > UFMC_Demodulator.m

UFMC_Demodulator

PURPOSE ^

UFMC demodulates received signal [1, 2].

SYNOPSIS ^

function [ z ] = UFMC_Demodulator( r, Para)

DESCRIPTION ^

 UFMC demodulates received signal [1, 2].

 function [ z ] = UFMC_Demodulator( r, Para )

 The function works for SISO and MIMO.

 Input arguments:

   r: received signal. Size: matrix [Para.N_R,
   (Para.nSubcarriers+Para.filt_L-1)*Para.Ns]

   Para: structure containing the modulation parameters.

 Outputs arguments:

   z: demodulated symbols at each subcarrier and multicarrier symbol.
   Size: matrix [Para.nSubcarriers, Para.Ns] if Para.N_R == 1 or
   multidimensional array [Para.N_R, Para.nSubcarriers, Para.Ns] if
   Para.N_R > 1

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [ z ] = UFMC_Demodulator( r, Para)
0002 % UFMC demodulates received signal [1, 2].
0003 %
0004 % function [ z ] = UFMC_Demodulator( r, Para )
0005 %
0006 % The function works for SISO and MIMO.
0007 %
0008 % Input arguments:
0009 %
0010 %   r: received signal. Size: matrix [Para.N_R,
0011 %   (Para.nSubcarriers+Para.filt_L-1)*Para.Ns]
0012 %
0013 %   Para: structure containing the modulation parameters.
0014 %
0015 % Outputs arguments:
0016 %
0017 %   z: demodulated symbols at each subcarrier and multicarrier symbol.
0018 %   Size: matrix [Para.nSubcarriers, Para.Ns] if Para.N_R == 1 or
0019 %   multidimensional array [Para.N_R, Para.nSubcarriers, Para.Ns] if
0020 %   Para.N_R > 1
0021 
0022 % References:
0023 % [1] 5GNow Deliverable 3.2 pp 29-35
0024 % [2] F. Schaich, T. Wild and Y. Chen, "Waveform Contenders for 5G - Suitability for Short Packet and Low Latency Transmissions,"
0025 %     2014 IEEE 79th Vehicular Technology Conference (VTC Spring), Seoul, 2014, pp. 1-5
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: Mathieu Van Eeckhaute, May 25, 2018.
0029 % Contributors: François Rottenberg, June 22
0030 % Change log:
0031 
0032 if Para.N_R==1
0033     %serial to parallel conversion
0034     rx_tsymbol = reshape(r, Para.nSubcarriers+Para.filt_L-1, Para.Ns);
0035     %2N point FFT (Para.nSubcarriers-L+1 extra zeroes added to reach 2*Para.nSubcarriers)
0036     FFT_input  = [rx_tsymbol; zeros(Para.nSubcarriers-Para.filt_L+1, Para.Ns)];
0037     FFT_output = 1/sqrt(Para.nSubcarriers).*fft(FFT_input,2*Para.nSubcarriers,1);
0038     %discard the useless elements
0039     z =  FFT_output(1:2:end,:); 
0040     
0041     z = proto_f_eq(z, Para); % Equalization of the prototype filter
0042 
0043 else
0044     z=zeros(Para.N_R, Para.nSubcarriers, Para.Ns);
0045     for index_N_R=1:Para.N_R
0046         %serial to parallel conversion
0047         rx_tsymbol = reshape(r(index_N_R,:), Para.nSubcarriers+Para.filt_L-1, Para.Ns);
0048         %2N point FFT (Para.nSubcarriers-L+1 extra zeroes added to reach 2*Para.nSubcarriers)
0049         FFT_input  = [rx_tsymbol; zeros(Para.nSubcarriers-Para.filt_L+1, Para.Ns)];
0050         FFT_output = 1/sqrt(Para.nSubcarriers).*fft(FFT_input,2*Para.nSubcarriers,1);
0051         %discard the useless elements
0052         z_temp =  FFT_output(1:2:end,:);
0053         
0054         z(index_N_R,:,:) = proto_f_eq(z_temp, Para); % Equalization of the prototype filter
0055     end
0056 end
0057 
0058 end

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