I have been trying to implement an OFDM logic in MATLAB (without any cyclic prefix, guard interval or pilot carriers yet) and have been failing to reconstruct the time domain signal following the IFFT for transmission, at least based on my understanding of what it should look like. Please see the code I have been using below;

Code:

```
modOrder = 16; % 16-QAM
numSubcarriers = 64; % 64-point IDFT so same number of subcarriers
numBits = numSubcarriers*log2(modOrder);
srcBits = randi([0,1],numBits,1); % Generate random bits for one OFDM symbol to carry
qamModOut = qammod(srcBits,modOrder,"InputType","bit","UnitAveragePower",true);
ofdmModOut = ofdmmod(qamModOut,64,0);
channelWidth = 20e6;
deltaF = channelWidth/numSubcarriers;
Ts = 1/deltaF;
iVal = 2e-10;
fc = 2.4e9;
t = 0:iVal:Ts-iVal;
for i=1:64
y(i,:) = ofdmModOut(i)*sqrt(numSubcarriers/Ts)*...
sinc((pi*numSubcarriers/Ts)*(t-(i-1)*Ts/numSubcarriers));
end
ySum=(1/numSubcarriers)*sum(y,1);
Ixt = real(ySum);
Qxt = imag(ySum);
timeDomainBB = (Ixt.*cos(2*pi*fc.*t))-(Qxt.*sin(2*pi*fc.*t));
```

When I compare the result timeDomainBB with a passband version of it that I build using the code below;

Code:

```
for i=1:length(qamModOut)
alltimeDomainPB(i,:) = real(qamModOut(i)* ...
exp(complex(0,1)*(2*pi*((2.39e9+(deltaF/2))+((i-1)*deltaF))*t)));
end
timeDomainPB = sum(alltimeDomainPB,1);
```

The red waveform is the baseband version and the blue is the passband. Also the spectrum of the baseband doesn't appear to be correct;

Where the yellow figure extends well beyond the expected frequency range between 2.39-2.41GHz.

Can anyone help me with what I might be doing worng with the construction of the time domain signal (if that is the problem..)?

Thanks in advance.