FBMC-OQAM modulates symbols d. function [ s ] = FBMC_OQAM_Modulator( d, Para ) Input arguments: d: PAM symbols. Size: matrix [Para.nSubcarriers, 2*(Para.Ns+Para.PreambleLength)] if Para.N_T == 1 or multidimensional arry [Para.N_T, Para.nSubcarriers, 2*(Para.Ns+Para.PreambleLength)] if Para.N_T > 1. Para: structure containing the modulation parameters. Outputs arguments: s: transmit signal. Size: matrix [Para.N_T, ~].
0001 function [ s ] = FBMC_OQAM_Modulator( d, Para ) 0002 % FBMC-OQAM modulates symbols d. 0003 % 0004 % function [ s ] = FBMC_OQAM_Modulator( d, Para ) 0005 % 0006 % Input arguments: 0007 % 0008 % d: PAM symbols. Size: matrix [Para.nSubcarriers, 0009 % 2*(Para.Ns+Para.PreambleLength)] if Para.N_T == 1 or multidimensional 0010 % arry [Para.N_T, Para.nSubcarriers, 2*(Para.Ns+Para.PreambleLength)] if Para.N_T 0011 % > 1. 0012 % 0013 % Para: structure containing the modulation parameters. 0014 % 0015 % Outputs arguments: 0016 % 0017 % s: transmit signal. Size: matrix [Para.N_T, ~]. 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 theta=ones(2*M,2*(Para.Ns+Para.PreambleLength)); 0027 theta(2:2:end,1:2:end)=1j; 0028 theta(1:2:end,2:2:end)=1j; 0029 [p, ~] = GeneratePrototypePhydyas(M, Para.kappa); % Prototype filter generation 0030 p=p.*sqrt(1/M); 0031 0032 0033 if Para.N_T==1 0034 if length(d(:,1))~=2*M 0035 error('Variable "d" does not have the correct size') 0036 end 0037 d_oqam=d.*theta; % OQAM pattern (real-imaginary) 0038 s=SFB( d_oqam, p, Para ); 0039 else 0040 if length(d(:,1,1))~=Para.N_T 0041 error('Variable "d" does not have the correct size') 0042 end 0043 s=zeros(Para.N_T,(2*(Para.Ns+Para.PreambleLength)+2*Para.kappa)*M); 0044 for index_N_T=1:Para.N_T 0045 d_oqam=squeeze(d(index_N_T,:,:)).*theta; % OQAM pattern (real-imaginary) 0046 s(index_N_T,:)=SFB(d_oqam, p, Para ); 0047 end 0048 end 0049 0050 0051 end 0052