# Retrieve DFT coefficients from DCT coefficients

A vector a is transformed via a discrete cosine transform (DCT) to give vector b. For example in Matlab

b=dct(a);.

Vector a is also transformed via a discrete Fourier transform (DFT) to give vector c. E.g.

c=fft(a);

What is the fastest way to determine c from b without using a or retrieving it? For example,

c=fft(idft(b));

is not allowed.

• Is this a homework question? And, what do you mean by "fastest"?
– MBaz
Mar 25, 2021 at 13:29
• @MBaz Not a homework question. I've been reading around calculating a DCT using an FFT (e.g. dsp.stackexchange.com/a/10606) and was interested in the ability to directly transform between the two domains. I guess "fastest" is in the eye of the beholder. Lets go for a big-O style metric Mar 25, 2021 at 13:57

Behind an FFT or a DCT operator, which can be implemented as a matrix product. Depending on the shape of your discrete vectors, you may have $$b=D\times a$$ and $$c=F\times a$$. So you can find your answer with a suitable matrix product. You can also find fast algorithms by decomposing each of the above matrices in simpler matrix product, or using lifting-like implementation. The very fastest can be more difficult to find.