高速コサイン変換を実装したい。ウィキペディアで、FFTと同様に計算されるDCTの高速バージョンがあることを読みました。Scipyでも使用されているFTPACKおよびFFTWの実装について、引用されたMakhoul *の論文を読みましたが、実際のアルゴリズムを抽出できませんでした。これは私がこれまでに持っているものです:
FFTコード:
def fft(x):
    if x.size ==1:
        return x
    N = x.size
    x0 = my_fft(x[0:N:2])
    x1 = my_fft(x[0+1:N:2])
    k = numpy.arange(N/2)
    e = numpy.exp(-2j*numpy.pi*k/N)
    l = x0 + x1 * e
    r = x0 - x1 * e  
    return numpy.hstack([l,r])
DCTコード:
def dct(x):
    k = 0
    N = x.size
    xk = numpy.zeros(N)
    for k in range(N):     
        for n in range(N):
            xn = x[n]
            xk[k] += xn*numpy.cos(numpy.pi/N*(n+1/2.0)*k)
    return xk 
FCTトライアル:
def my_fct(x):
    if x.size ==1:
        return x
    N = x.size
    x0 = my_fct(x[0:N:2]) # have to be set to zero?
    x1 = my_fct(x[0+1:N:2])
    k = numpy.arange(N/2)
    n = # ???
    c = numpy.cos(numpy.pi/N*(n+1/2.0)*k)
    l = x0 #???
    r = x0 #???
    return numpy.hstack([l,r])
* J。Makhoul、「一次元および二次元の高速コサイン変換」IEEE Trans。アコースト。スピーチシグ。手続き 28(1)、27-34(1980)。