I know the discrete cosine transform (DCT) is used for compression, but can anyone give an example of how to use it for bandlimited interpolation?

One way might be zero-padding in the DCT domain and then taking the IDCT. What is the time domain result of zero-padding in the DCT domain, and does it have any advantages over traditional windowed sinc interpolation? Are their other ways of using the DCT for interpolation?


This question is motivated by this answer, where the poster references "discrete sinc interpolation" (as opposed to windowed sinc) and interpolation using the DCT in the work of Yaroslavsky. The potential advantage of using the DCT rather than the DFT is that the DCT treats the signal as if it is symmetric periodic (mirror image replicas), whereas the DFT treats it as simply periodic. I believe this reduces Gibbs phenomenon at the edges of the signal.

  • 1
    $\begingroup$ //"does it have any advantages over traditional windowed sinc interpolation?"// - - - - - - In what context? Real-time processing (like sample rate conversion)? And why DCT instead of DFT? $\endgroup$ Commented Jul 11, 2023 at 18:56
  • $\begingroup$ @robertbristow-johnson I've edited the question. I think the advantage might be reduced edge effects. $\endgroup$
    – Gillespie
    Commented Jul 11, 2023 at 19:14
  • 1
    $\begingroup$ When I learned about the DCT I was able to connect it to the DFT of a sequence nearly twice as long. $$ \big\{ x[0], x[1], ... x[N-2], x[N-1], x[N-1], x[N-2], ... x[1], x[0] \big\} $$ or nearly twice as long: $$ \big\{ x[0], x[1], ... x[N-2], x[N-1], x[N-2], x[N-3], ... x[2], x[1] \big\} $$ There is even symmetry naturally in the latter case and, with a little offset, also in the former case. That's how the DCT reduces edge effects. $\endgroup$ Commented Jul 12, 2023 at 2:04
  • $\begingroup$ Now, if you're using a DFT or DCT to interpolate, you're using the transform to circularly shift by a fractional sample amount. I don't think you'll do that for real-time operation unless your throughput delay is very long. If you use sinc-based interpolation, you would be reconstructing a continuous-time function with truncated sincs and they'll be whatever edge effects you get when you're close to the edge. $\endgroup$ Commented Jul 12, 2023 at 2:14
  • 1
    $\begingroup$ @robertbristow-johnson what do you mean by "sinc interpolating exactly for a circular buffer?" I think you're getting at the answer to my question, but I don't quite see it yet. $\endgroup$
    – Gillespie
    Commented Dec 6, 2023 at 18:17


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.