OFDM modulates data symbols (possibly pre-equalized). function [ s ] = OFDM_Modulator( d, Para ) The function works for SISO and MIMO systems. Input arguments: d: data symbols (possibly pre-equalized). Size: matrix [Para.nSubcarriers, Ns] if Para.N_T == 1, multidimensional array [para.N_T, Para.nSubcarriers, Ns] if Para.N_T > 1. Para: structure containing the modulation parameters. Outputs arguments: s: transmitted signal. Size: matrix [Para.N_T, Para.nSubcarriers*(1+Para.CP)*(Para.Ns+Para.PreambleLength)]
0001 function [ s ] = OFDM_Modulator( d, Para ) 0002 % OFDM modulates data symbols (possibly pre-equalized). 0003 % 0004 % function [ s ] = OFDM_Modulator( d, Para ) 0005 % 0006 % The function works for SISO and MIMO systems. 0007 % 0008 % Input arguments: 0009 % 0010 % d: data symbols (possibly pre-equalized). Size: matrix [Para.nSubcarriers, Ns] if Para.N_T == 1, 0011 % multidimensional array [para.N_T, Para.nSubcarriers, Ns] if Para.N_T > 1. 0012 % 0013 % Para: structure containing the modulation parameters. 0014 % 0015 % Outputs arguments: 0016 % 0017 % s: transmitted signal. Size: matrix [Para.N_T, 0018 % Para.nSubcarriers*(1+Para.CP)*(Para.Ns+Para.PreambleLength)] 0019 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: François Rottenberg, May 3, 2018. 0023 % Contributors: 0024 % Change log: 0025 0026 0027 L_CP=Para.nSubcarriers*Para.CP; 0028 0029 if Para.N_T==1 0030 temp=1/sqrt(Para.nSubcarriers+L_CP)*Para.nSubcarriers*ifft(d); 0031 X=[temp(Para.nSubcarriers-L_CP+1:end,:); temp]; 0032 s=reshape(X,1,(Para.nSubcarriers+L_CP)*(Para.Ns+Para.PreambleLength)); 0033 else 0034 s=zeros(Para.N_T,(Para.Ns+Para.PreambleLength)*(Para.nSubcarriers+L_CP)); 0035 for index_N_T=1:Para.N_T 0036 temp=1/sqrt(Para.nSubcarriers+L_CP)*(Para.nSubcarriers)*ifft(squeeze(d(index_N_T,:,:))); 0037 X=[temp(Para.nSubcarriers-L_CP+1:end,:); temp]; 0038 s(index_N_T,:)=reshape(X,1,(Para.nSubcarriers+L_CP)*(Para.Ns+Para.PreambleLength)); 0039 end 0040 end 0041 0042 0043 end 0044