簡體   English   中英

為什么kiss_fft的正負4基數計算不同?

[英]Why is the kiss_fft's forward and inverse radix-4 calculation different?

我一直在花時間了解並實現自己的混合基數實時抽取快速傅里葉變換。 我主要是使用kiss_fft和http://www.briangough.com/fftalgorithms.pdf了解正在發生的事情。

從我所讀的內容中,我可以通過使用共軛旋轉因子來反轉fft。

但是,當我閱讀kiss_fft源代碼時,radix-4實現實際上會測試我們是否正在執行正向或逆向轉換,並使用略有不同的數學方法。

https://github.com/itdaniher/kissfft/blob/master/kiss_fft.c#L77

    if(st->inverse) {
        Fout[m].r = scratch[5].r - scratch[4].i;
        Fout[m].i = scratch[5].i + scratch[4].r;
        Fout[m3].r = scratch[5].r + scratch[4].i;
        Fout[m3].i = scratch[5].i - scratch[4].r;
    }else{
        Fout[m].r = scratch[5].r + scratch[4].i;
        Fout[m].i = scratch[5].i - scratch[4].r;
        Fout[m3].r = scratch[5].r - scratch[4].i;
        Fout[m3].i = scratch[5].i + scratch[4].r;
    }

我以為正向和反向fft所使用的fft計算是相同的(就像對kiss_fft的radix-2、3和5實現一樣)。

為什么kiss_fft基數4計算需要這樣做?

如果在向量復數共軛之前進行運算,則可以對IFFT使用相同的radix-4計算內核。 或者,您可以跳過執行單獨的前面的矢量復數共軛運算,而使用具有內置共軛的其他radix-4計算內核。

使用內置的共軛功能進行Radix-4可能會在某些處理器體系結構上提供更好的寄存器重用。

注意,在將IFFT與FFT相關的方程式中包括2個復共軛。 反向旋轉旋轉因子僅需注意其中之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM