Number of samples in one period of subcarrier after IFFT I have a quick question about the number of samples in one period of a sub carrier in OFDM systems. The IFFT process generates N-parallel sub carriers in discrete time domain which are sent simultaneously over the sub carrier frequencies. 

What is the number of samples in one period of a sub carrier after IFFT?



Thanks for your reply. Let me give you more details about my query with an illustration as below. The picture shows the sub carriers as analog but lets take them as discrete before DAC and CP addition. The system has 4 sub carriers and hence they have different frequencies. My questions is here at this point; again assuming they are just the output of the IFFT and digital- 
Does each sub carrier has 4 samples in every cycle? So lets say the duration of OFDM symbol is T seconds. The subcarrier1 has 1 cycle and I am visualizing that the sub carrier has 4 samples during the T seconds.
Subcarrier2 has 2 cycles (period) and hence it has 2x4=8 samples during the OFDM T seonds.
And for subcarrier3 it has 3x4=12 samples.
For subcarrier4, there are 4x4=16 samples during the OFDM symbol (T seconds length).

And in total, the OFDM symbol has 36 samples in the symbol length T seconds.

Am I correct interpreting this?
If you'd like to think analog, an OFDM signal can be written as a sum of weighted complex sinusoidals:
$$
x(t)=\sum_{k=0}^{N-1}X_k \exp{\left( \mathrm j 2\pi\frac{kf_\mathrm{s}}{N}t \tag{1}\right)},
$$
where $N$ is the number of subcarriers, $f_\mathrm{s}$ is the sampling frequency and $X_k$ denotes the subcarrier values. For a digital implementation, (1) is sampled at $t=n/f_\mathrm{s}$:
$$
x(n/f_\mathrm{s})=\sum_{k=0}^{N-1}X_k \exp{\left( \mathrm j 2\pi\frac{kn}{N} \tag{2}\right)},
$$
which corresponds to the inverse discrete Fourier transform (IDFT), implemented by an IFFT. The IFFT has $N$ input values and $N$ output values. That's ok, because the IDFT is N-periodic and thus any additional sample would be redundant. Consequently, every subcarrier in (1) is represented by $N$ samples, regardless of its number of periods during the OFDM symbol length.

If you try to imagine the digital OFDM time domain signal as a superposition of $N$ sampled sinusoidals, the figure you posted has two problems, in my opinion: 


The first subcarrier in the image obviously has frequency $f_\mathrm{s}/N$ and the fourth subcarrier has frequency $f_\mathrm{s}$. That's wrong. From (1) you can see that the first subcarrier should have frequency 0 and the fourth should have frequency $(N-1)f_\mathrm{s}/N$. You can reorder the subcarriers (e.g. from negative to positive) but the DC subcarrier must be included and there must not exist a subcarrier with frequency $f_\mathrm{s}$. (One could argue that subcarriers with frequency 0 and $f_\mathrm{s}$ are actually the same but I think it's a poor choice for an illustration)
The image only shows the real (or imaginary) part of the sinusoidals. That could give you the impression that some aliasing is going on when sampling. I will explain in a second what I mean.


Please consider the following figure that I have created instead


It contains the subcarriers from $k=0$ to $k=3$ (lines) and their samples (dots). It also shows the real part (blue) and imaginary part (red). Now consider the red line in the first and the third subfigure: their samples are exactly the same. However, the blue (imaginary) part is different. That is, $N=4$ samples are sufficient here to represent all subcarriers.

Here is the Matlab code I used to create the above figure:

N = 4; % num subcarriers
os = 128; % oversampling
t = linspace(0, 1-1/(N*os), N*os); % time
n = 0:N-1; % discrete time

figure;
cnt = 1; % helper
for k = 0:N-1;
    subcarrier = exp(1i * 2*pi*k*t);

    subplot(N,1,cnt);
    plot( t, real(subcarrier), 'b-');
    hold on;
    plot( t(n*os+1), real(subcarrier(n*os+1)), 'b.', 'MarkerSize', 20);

    plot( t, imag(subcarrier), 'r--');
    hold on;
    plot( t(n*os+1), imag(subcarrier(n*os+1)), 'r.', 'MarkerSize', 20);

    if(k ~= N-1)
        set(gca, 'XTick', []);
    else
        xlabel('t/T');
    end
    ylim([-1 1]);
    title( sprintf('k=%d', k));

    cnt = cnt + 1;
end