Assume in OFDM , there are N=64 subcarriers. I would like to upsample my signal by Factor 8 after IFFT and pass it through channel then downsample it by factor 8 before FFT. I can use upsample, downsample and interpolating functions. However I was told that there is an alternate to use (8*64) point IFFT and (8*64) points FFT. I used to think that since my symbol size is originally N then I can zeros at the end of my signal (64*8-64) that its length is 512 then I can apply IFFT and FFT correctly and take the first 64 samples and discard the rest. However after reading different post here (like this) enter link description here about adding zeros between samples or re-scaling the signal to get the correct result. I am wondering if anyone can explain to me about right way of upsampling and downsamping my signal using IFFT and FFT and also the reason for that. In different posts here people mention to add zeros between samples but they never said why.
1 Answer
Given a time domain signal $x_1[n]$ of length $N$ and its $N$-point DFT $X_1[k]$, If you pad $M$ zeros to the end of $x_1[n]$ and then take ($N+M$) point-DFT of it, this will give you an interpolated set of frequency samples, $X_2[k]$; i.e., a denser set of uniform samples of the DTFT, $X(e^{j\omega})$, than was previously available from $X_1[k]$.
Given a time domain signal $x_1[n]$ of length $N$ and its $N$-point DFT $X_1[k]$, If you carefully stuff (insert) $M$ zeros to the central portion of the DFT $X_1[k]$ (by moving those right half of the available $X_1[k]$ samples to the right by the amount of $M$) and then take ($N+M$) point-inverse DFT of the resulting $X_2[k]$, this will give you an interpolated set of time samples, $x_2[n]$; Note that you should scale the amplitudes in accordance with the interpoaltion amount.
Note that implementing 1-) is straightforward, while implementing 2-) requires careful selection of the correct indices at the central portion for the original length $N$ being even and odd, the details of which is provided by some examples here dsp.se, including the link you have provided.
-
$\begingroup$ Can you explain why in frequency domain zero should be added in the middle of signal and not to the end of the signal? $\endgroup$ Commented Aug 15, 2017 at 15:19
-
$\begingroup$ Start from time domain signal $x[n]$ and consider its DTFT $X(e^{j\omega})$ in the range $\omega=0$ to $\omega=2\pi$, now upsample $x[n]$ by say 2, this'll shrink the DTFT $X(e^{j\omega})$ by 2 towards $\omega=0$ and $\omega= 2\pi$. Hence leave the central region empty. When you simulate this in Frequency domain, therefore, you will stuff zeros to the central region. Note that it's DFT $X[k]$ that is practically utilized. $\endgroup$– Fat32Commented Aug 15, 2017 at 15:31