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

F_OFDM_Demodulator

PURPOSE ^

F-OFDM demodulates received signal.

SYNOPSIS ^

function [ z ] = F_OFDM_Demodulator( r, Para)

DESCRIPTION ^

 F-OFDM demodulates received signal.

 function [ z ] = F_OFDM_Demodulator( r, Para )

 The function works for SISO (MIMO systems to be implemented).

 Input arguments:

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

   Para: structure containing the modulation parameters.

 Outputs arguments:

   z: demodulated symbols. Size: matrix [Para.nSubcarriers, Para.Ns]
   if Para.N_R == 1, multidimensional array [Para.N_R, Para.nSubcarriers,
   Ns] if Para.N_R > 1.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [ z ] = F_OFDM_Demodulator( r, Para)
0002 % F-OFDM demodulates received signal.
0003 %
0004 % function [ z ] = F_OFDM_Demodulator( r, Para )
0005 %
0006 % The function works for SISO (MIMO systems to be implemented).
0007 %
0008 % Input arguments:
0009 %
0010 %   r: received signal. Size: matrix [Para.N_R,
0011 %   (Para.nSubcarriers+Para.CP)*(Para.Ns)+Para.L-1]
0012 %
0013 %   Para: structure containing the modulation parameters.
0014 %
0015 % Outputs arguments:
0016 %
0017 %   z: demodulated symbols. Size: matrix [Para.nSubcarriers, Para.Ns]
0018 %   if Para.N_R == 1, multidimensional array [Para.N_R, Para.nSubcarriers,
0019 %   Ns] if Para.N_R > 1.
0020 
0021 
0022 % This file is part of WaveComBox: www.wavecombox.com and is distributed under the terms of the MIT license. See accompanying LICENSE file.
0023 % Original author: Mathieu Van Eeckhaute, September 26, 2018.
0024 % Contributors:
0025 % Change log:
0026 
0027 CP_L=Para.nSubcarriers*Para.CP;
0028 proto_filt = F_OFDM_protofilter_design(Para);
0029 modulated_filters = F_OFDM_modulate_proto_filt(proto_filt, Para);
0030 if Para.N_R==1
0031     %Rx Filterbank
0032     z = zeros(Para.nSubcarriers, Para.Ns);
0033     for kBand = 1:Para.NsubBands
0034         rx_sig_filt = conv(r, modulated_filters(:, kBand));
0035         rx_sig_filt = rx_sig_filt(Para.L:end-Para.L+1);
0036         rx_sig_block = reshape(rx_sig_filt, Para.nSubcarriers+CP_L, Para.Ns);%S/P
0037         FT_in = rx_sig_block(CP_L+1:end, :);%CP removal
0038         FT_out = sqrt(Para.nSubcarriers+CP_L)/Para.nSubcarriers*fft(FT_in, Para.nSubcarriers, 1);
0039         z(Para.SubBandSCset(:, kBand), :) = FT_out(Para.SubBandSCset(:, kBand), :);
0040     end
0041 else
0042     error('MIMO not implemented')
0043 end
0044 
0045 
0046 
0047 end
0048

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