What you are experiencing is technically called **interpolation by DFT**; i.e., interpolating the time-domain sequence $x[n]$ by properly zero staffing the middle portion of it's DFT $X[k]$ (and taking the inverse DFT to get the time domain interpolated sequence). Normally the signal interpolation is described and implemented in time-domain. However it's also possible to implement it using its frqeuency domain expression... The following may be helpful: Interpolation explained in time-domain: $$ x[n] \rightarrow ({\uparrow L}) \rightarrow w[n] \rightarrow \boxed{LPF} \rightarrow y[n]$$ Input sequence $x[n]$ is of length $N$, expanded sequence $w[n]$ is of length $M = N \times L$, and the LPF has a **Gain = L** and discrete-time cutoff frequency of $\omega_c = \pi/L$ radians per sample. the interpolated output sequence $y[n]$ is also of length $M = L \times N$. Let's look at the relation in the frequency domain : if $X[k]$ is the N-point DFT of $x[n]$, then $W[k] = X[k]$ is the $M = L \times N$ point DFT of the sequence $w[n]$ (Note: $W[k]$ is indeed an L-fold copy of $X[k]$.). Let the DFT of LPF be $H[k]$ which is also $M = L \times N$ point. $$ H[k] = \begin{cases}{ L ~~~,~~~-N/2 \leq k \leq N/2 \\ 0 ~~~~, ~~~~ \text{otherwise} }\end{cases} $$ Then the DFT of the interpolation output $y[n]$ is $$Y[k] = H[k] W[k] $$ After the multiplication $Y[k]$ becomes : $$ Y[k] = \begin{cases}{ L X[k] ~~~,~~~-N/2 \leq k \leq N/2 \\ 0 ~~~~, ~~~~ \text{otherwise} }\end{cases} $$ This is exactly what you are impementing in your **zero staffed DFT** of $X[k]$. You try to obtain $Y]k]$ by staffing the middle portion of $X[k]$ to ake it length $M$.And yo ucan slo see why your magnitude is midding by $1/L$ as you did not multiply it by $L$. The **implicitly** implemented lowpass filter refers to how you obtain $Y[k]$, by zero staffing $X[k]$ into length $M$, instead of obtaining it by the **explicit** product $Y[k]= H[k] X[k]$ which shows the filtering in freqency domain explicitly. The reduction in magnitude can be explained both as due to the increase in the length of the interpolated sequence (hence inverse DFT scaling) or as due to the (missing) gain of the implicit interpolation lowpass filter that is implied by zero staffing the DFT. To correct the amplitude mismatch, simply multiply the interpolated sequence by the interpolation factor.