proto_f_eq equalizes the UFMC filter on symbol sequence [1, 2]. function [ d_eq ] = proto_f_eq( d, Para ) Input arguments: d: filtered received symbols . Size: matrix [Para.nSubcarriers, Para.Ns+Para.PreambleLength] Para: structure containing the modulation parameters. Outputs arguments: d_eq: equalized symbols affected by UFMC prototype filter. Size: matrix [length(Para.ActiveSubcarriers), Para.Ns]
0001 function [ d_eq ] = proto_f_eq( d, Para ) 0002 % proto_f_eq equalizes the UFMC filter on symbol sequence [1, 2]. 0003 % 0004 % function [ d_eq ] = proto_f_eq( d, Para ) 0005 % 0006 % Input arguments: 0007 % 0008 % d: filtered received symbols . Size: matrix [Para.nSubcarriers, Para.Ns+Para.PreambleLength] 0009 % 0010 % Para: structure containing the modulation parameters. 0011 % 0012 % Outputs arguments: 0013 % 0014 % d_eq: equalized symbols affected by UFMC prototype filter. Size: matrix [length(Para.ActiveSubcarriers), Para.Ns] 0015 0016 % References: 0017 % [1] 5GNow Deliverable 3.2 pp 29-35 0018 % [2] F. Schaich, T. Wild and Y. Chen, "Waveform Contenders for 5G - Suitability for Short Packet and Low Latency Transmissions," 0019 % 2014 IEEE 79th Vehicular Technology Conference (VTC Spring), Seoul, 2014, pp. 1-5 0020 0021 % This file is part of WaveComBox: www.wavecombox.com and is distributed under the terms of the MIT license. See accompanying LICENSE file. 0022 % Original author: Mathieu Van Eeckhaute, May 25, 2018. 0023 % Contributors: François Rottenberg 0024 % Change log: 0025 0026 % power normalization 0027 norm_fact=ComputeNormFact(Para); 0028 d = d./norm_fact; 0029 0030 proto_filt = protofilter_design(Para);%generate prototype filter 0031 pf = fft((proto_filt),2*Para.nSubcarriers);%2N fft to be able to equalize the filter when NsubCar is even 0032 modN = @(x) mod(x-1,Para.nSubcarriers)+0.5; % modulo N , domain and image from 1 to N 0033 sc_select = 2*(modN(1-(Para.SubBandWidth-1)/2 : 1+(Para.SubBandWidth-1)/2)); %Selection of frequencies to be compensated 0034 pf_eq = repmat(1./(pf(sc_select)),Para.NbSubBands,1); 0035 d_eq=zeros(Para.nSubcarriers,Para.Ns); 0036 d_eq(Para.ActiveSubcarriers,:) = d(Para.ActiveSubcarriers,:).*repmat(pf_eq,1,Para.Ns); 0037 end 0038