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.
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