1. 程式人生 > >傅立葉變換與大數乘法

傅立葉變換與大數乘法

我們知道,兩個 N 位數字的整數的乘法,如果使用常規的演算法,時間複雜度是 O(N2)。然而,使用快速傅立葉變換,時間複雜度可以降低到 O(N logN loglogN)。

假設我們要計算以下兩個 N 位數字的乘積:

a = (aN-1aN-2...a1a0)10 = aN-1x10N-1 + aN-2x10N-2 + ... + a1x101 + a0x100

b = (bN-1bN-2...b1b0)10 = bN-1x10N-1 + bN-2x10N-2 + ... + b1x101 + b0x100

將上面兩個式子相乘,得到以下公式 (共 2N - 1 項):

c = a x b = c2N-2x102N-2

 + c2N-3x102N-3 + ... + c1x101 + c0x100

非常容易驗證,上式中的 ck ( 0 ≤ k ≤ 2N-2 ) 滿足以下公式:

ck = a0xbk + a1xbk-1 + ... + ak-2xb2 + ak-1xb1
      + akxb0 + ak+1xb-1 + ... + aN-2xb-(N-2-k) + aN-1xb-(N-1-k)

上式共有 N 項,ai 和 bj 的下標 i 和 j 滿足 i + j = k。若不滿足 0 ≤ i, j ≤ N-1 時,則令 ai = bj = 0。

我們以兩個 3 ( N = 3 ) 位數 a = 678 和 b = 432 的乘積來說明以上過程吧。

a = (678)10 = 6x102 + 7x101 + 8x100

b = (432)10 = 4x102 + 3x101 + 2x100

由此: 

c0 = a0xb0 + a1xb-1 + a2xb-2 = 8x2 + 7x0 + 6x0 = 16 + 0 + 0 = 16

c1 = a0xb1 + a1xb0 + a2xb-1 = 8x3 + 7x2 + 6x0 = 24 + 14 + 0 = 38

c2 = a0xb2 + a1xb1 + a2xb0 = 8x4 + 7x3 +6x2 = 32 + 21 + 12 = 65

c3 = a0xb3 + a1xb2 + a2xb1 = 8x0 + 7x4 + 6x3 = 0 + 28 + 18 = 46


c4 = a0xb4 + a1xb3 + a2xb2 = 8x0 + 7x0 + 6x4 = 0 + 0 + 24 = 24

最後:

c = a x b = 104xc4 + 103xc3 + 102xc2 + 101xc1 + 100xc0
   = 10000x24 + 1000x46 + 100x65 + 10x38 + 1x16
   = 292896

如果按以上方法計算大整數的乘法,時間複雜度是 O(N2)。

但是,我們注意到,向量 {ck} 是向量 {ai} 和向量 {bj} 的卷積。根據卷積定理向量卷積的離散傅立葉變換是向量離散傅立葉變換的乘積。於是,我們可以按照以下步驟來計算大整數乘法:

對於複數向量 { xN-1, ..., x1, x0 },離散傅立葉變換公式為:

離散傅立葉逆變換公式為:

注意到離散傅立葉逆變換除了指數的符號相反以及結果需要乘以歸一化因子 1/N 外,與離散傅立葉變換是相同的。所以計算離散傅立葉變換的程式稍做修改也可以用於計算逆變換。

在我們的例子中,乘積 c = 292896,共 6 位數字,N 需要擴充套件到 23 = 8。那麼,向量 {ai} 和向量 {bj} 如下所示:

{ a7, a6, a5, a4, a3, a2, a1, a0 } = { 0, 0, 0, 0, 0, 6, 7, 8 }

{ b7, b6, b5, b4, b3, b2, b1, b0 } = { 0, 0, 0, 0, 0, 4, 3, 2 }

為了求出以上向量的離散傅立葉變換,我們令

ω = e-2πi/N = e-2πi/8 = e-πi/4 = cos(-π/4) + i sin(-π/4) = √2 / 2 - i √2 / 2 ≈ 0.7-0.7i

為了方便計算,我們預先求出 ω 的各次方,如下:

注意到當 n > 2 時,an = 0,於是: 

A0 = a00x0 + a11x0 + a22x0 = 8xω0 + 7xω0 + 6xω0 = 8x1 + 7x1 + 6x1 = 21

A1 = a00x1 + a11x1 + a22x1 = 8xω0 + 7xω1 + 6xω2 ≈ 8x1 + 7x(0.7 - 0.7i) + 6x(-i) = 12.9-10.9i

A2 = a00x2 + a11x2 + a22x2 = 8xω0 + 7xω2 + 6xω4 = 8x1 + 7x(-i) + 6x(-1) = 2-7i

A3 = a00x3 + a11x3 + a22x3 = 8xω0 + 7xω3 + 6xω6 ≈ 8x1 + 7x(-0.7 - 0.7i) + 6xi = 3.1+1.1i

A4 = a00x4 + a11x4 + a22x4 = 8xω0 + 7xω4 + 6xω8 = 8x1 + 7x(-1) + 6x1 = 7

A5 = a00x5 + a11x5 + a22x5 = 8xω0 + 7xω5 + 6xω10 ≈ 8x1 + 7x(-0.7 + 0.7i) + 6x(-i) = 3.1-1.1i

A6 = a00x6 + a11x6 + a22x6 = 8xω0 + 7xω6 + 6xω12 = 8x1 + 7xi + 6x(-1) = 2+7i

A7 = a00x7 + a11x7 + a22x7 = 8xω0 + 7xω7 + 6xω14 ≈ 8x1 + 7x(0.7 + 0.7i) + 6xi = 12.9+10.9i

同樣,當 n > 2 時,bn = 0,於是: 

B0 = b00x0 + b11x0 + b22x0 = 2xω0 + 3xω0 + 4xω0 = 2x1 + 3x1 + 4x1 = 9

B1 = b00x1 + b11x1 + b22x1 = 2xω0 + 3xω1 + 4xω2 ≈ 2x1 + 3x(0.7 - 0.7i) + 4x(-i) = 4.1-6.1i

B2 = b00x2 + b11x2 + b22x2 = 2xω0 + 3xω2 + 4xω4 = 2x1 + 3x(-i) + 4x(-1) = -2-3i

B3 = b00x3 + b11x3 + b22x3 = 2xω0 + 3xω3 + 4xω6 ≈ 2x1 + 3x(-0.7 - 0.7i) + 4xi = -0.1+1.9i

B4 = b00x4 + b11x4 + b22x4 = 2xω0 + 3xω4 + 4xω8 = 2x1 + 3x(-1) + 4x1 = 3

B5 = b00x5 + b11x5 + b22x5 = 2xω0 + 3xω5 + 4xω10 ≈ 2x1 + 3x(-0.7 + 0.7i) + 4x(-i) = -0.1-1.9i

B6 = b00x6 + b11x6 + b22x6 = 2xω0 + 3xω6 + 4xω12 = 2x1 + 3xi + 4x(-1) = -2+3i

B7 = b00x7 + b11x7 + b22x7 = 2xω0 + 3xω7 + 4xω14 ≈ 2x1 + 3x(0.7 + 0.7i) + 4xi = 4.1+6.1i

這樣,向量 {ai} 和向量 {bj} 的離散傅立葉變換 {Ai} 和 {Bj} 如下所示:

{ A7, A6, A5, A4, A3, A2, A1, A0 } = { 12.9+10.9i, 2+7i, 3.1-1.1i, 7, 3.1+1.1i, 2-7i, 12.9-10.9i, 21 }

{ B7, B6, B5, B4, B3, B2, B1, B0 } = { 4.1+6.1i, -2+3i, -0.1-1.9i, 3, -0.1+1.9i, -2-3i, 4.1-6.1i, 9 }

現在,將她們逐項相乘得到向量 {Ck},即 { C7, C6, C5, C4, C3, C2, C1, C0 }

= { -13.6+123.4i, -25-8i, -2.4-5.8i, 21, -2.4+5.8i, -25+8i, -13.6-123.4i, 189 }

為了求出向量 {Ck} 的離散傅立葉逆變換,我們令

ω = e2πi/N = e2πi/8 = eπi/4 = cos(π/4) + i sin(π/4) = √2 / 2 + i √2 / 2 ≈ 0.7+0.7i

為了方便計算,我們預先求出 ω 的各次方(注意 ωk+8 = ωk),如下:

於是: 

c0 = (1/N) x ( C00x0 + C11x0 + C22x0 + C33x0 
                  + C44x0 + C55x0 + C66x0 + C77x0 )
    = (1/8) x ( 189xω0 + (-13.6-123.4i)xω0 + (-25+8i)xω0 + (-2.4+5.8i)xω0 
                  + 21xω0 + (-2.4-5.8i)xω0 + (-25-8i)xω0 + (-13.6+123.4i)xω0 )
    = 0.125 x ( 189x1 + (-13.6-123.4i)x1 + (-25+8i)x1 + (-2.4+5.8i)x1 
                  + 21x1 + (-2.4-5.8i)x1 + (-25-8i)x1 + (-13.6+123.4i)x1 )
    = 0.125 x 128 = 16

c1 = (1/N) x ( 8xc1 = C00x1 + C11x1 + C22x1 + C33x1 
                  + C44x1 + C55x1 + C66x1 + C77x1 )
    = (1/8) x ( 189xω0 + ( -13.6-123.4i)xω1 + (-25+8i)xω2 + (-2.4+5.8i)xω3 
                  + 21xω4 + (-2.4-5.8i)xω5 + (-25-8i)xω6 + (-13.6+123.4i)xω7 )
    ≈ 0.125 x ( 189x1 + (-13.6-123.4i)x(0.7+0.7i) + (-25+8i)x(i) + (-2.4+5.8i)x(-0.7+0.7i) 
                  + 21x(-1) + (-2.4-5.8i)x(-0.7-0.7i) + (-25-8i)x(-i) + (-13.6+123.4i)x(0.7-0.7i) )
    = 0.125 x 300.96 = 37.62 ≈ 38

c2 = (1/N) x ( C00x2 + C11x2 + C22x2 + C33x2 
                  + C44x2 + C55x2 + C66x2 + C77x2 )
    = (1/8) x ( 189xω0 + (-13.6-123.4i)xω2 + (-25+8i)xω4 + (-2.4+5.8i)xω6 
                  + 21xω8 + (-2.4-5.8i)xω10 + (-25-8i)xω12 + (-13.6+123.4i)xω14 )
    = 0.125 x ( 189x1 + (-13.6-123.4i)x(i) + (-25+8i)x(-1) + (-2.4+5.8i)x(-i) 
                  + 21x1 + (-2.4-5.8i)x(i) + (-25-8i)x(-1) + (-13.6+123.4i)x(-i) )
    ≈ 0.125 x 518.4 = 64.8 ≈ 65

c3 = (1/N) x ( C00x3 + C11x3 + C22x3 + C33x3 
                  + C44x3 + C55x3 + C66x3 + C77x3 )
    = (1/8) x ( 189xω0 + (-13.6-123.4i)xω3 + (-25+8i)xω6 + (-2.4+5.8i)xω9 
                  + 21xω12 + (-2.4-5.8i)xω15 + (-25-8i)xω18 + (-13.6+123.4i)xω21 )
    ≈ 0.125 x ( 189x1 + (-13.6-123.4i)x(-0.7+0.7i) + (-25+8i)x(-i) + (-2.4+5.8i)x(0.7+0.7i) 
                  + 21x(-1) + (-2.4-5.8i)x(0.7-0.7i) + (-25-8i)x(i) + (-13.6+123.4i)x(-0.7-0.7i) )
    = 0.125 x 364.32 = 45.54 ≈ 46

c4 = (1/N) x ( C00x4 + C11x4 + C22x4 + C33x4 
                  + C44x4 + C55x4 + C66x4 + C77x4 )
    = (1/8) x ( 189xω0 + (-13.6-123.4i)xω4 + (-25+8i)xω8 + (-2.4+5.8i)xω12 
                  + 21xω16 + (-2.4-5.8i)xω20 + (-25-8i)xω24 + (-13.6+123.4i)xω28 )
    = 0.125 x ( 189x1 + (-13.6-123.4i)x(-1) + (-25+8i)x1 + (-2.4+5.8i)x(-1) 
                  + 21x1 + (-2.4-5.8i)x(-1) + (-25-8i)x1 + (-13.6+123.4i)x(-1) )
    = 0.125 x 192 = 24

c5 = (1/N) x ( C00x5 + C11x5 + C22x5 + C33x5 
                  + C44x5 + C55x5 + C66x5 + C77x5 )
    = (1/8) x ( 189xω0 + (-13.6-123.4i)xω5 + (-25+8i)xω10 + (-2.4+5.8i)xω15 
                  + 21xω20 + (-2.4-5.8i)xω25 + (-25-8i)xω30 + (-13.6+123.4i)xω35 )
    ≈ 0.125 x ( 189x1 + (-13.6-123.4i)x(-0.7-0.7i) + (-25+8i)x(i) + (-2.4+5.8i)x(0.7-0.7i) 
                  + 21x(-1) + (-2.4-5.8i)x(0.7+0.7i) + (-25-8i)x(-i) + (-13.6+123.4i)x(-0.7+0.7i) )
    = 0.125 x 3.04 = 0.38 ≈ 0

c6 = (1/N) x ( C00x6 + C11x6 + C22x6 + C33x6 
                  + C44x6 + C55x6 + C66x6 + C77x6 )
    = (1/8) x ( 189xω0 + (-13.6-123.4i)xω6 + (-25+8i)xω12 + (-2.4+5.8i)xω18 
                  + 21xω24 + (-2.4-5.8i)xω30 + (-25-8i)xω36 + (-13.6+123.4i)xω42 )
    = 0.125 x ( 189x1 + (-13.6-123.4i)x(-i) + (-25+8i)x(-1) + (-2.4+5.8i)x(i) 
                  + 21x1 + (-2.4-5.8i)x(-i) + (-25-8i)x(-1) + (-13.6+123.4i)x(i) )
    = 0.125 x 1.6 = 0.2 ≈ 0

c7 = (1/N) x ( C00x7 + C11x7 + C22x7 + C33x7 
                  + C44x7 + C55x7 + C66x7 + C77x7 )
    = (1/8) x ( 189xω0 + (-13.6-123.4i)xω7 + (-25+8i)xω14 + (-2.4+5.8i)xω21 
                  + 21xω28 + (-2.4-5.8i)xω35 + (-25-8i)xω42 + (-13.6+123.4i)xω49 )
    ≈ 0.125 x ( 189x1 + (-13.6-123.4i)x(0.7-0.7i) + (-25+8i)x(-i) + (-2.4+5.8i)x(-0.7-0.7i) 
                  + 21x(-1) + (-2.4-5.8i)x(-0.7+0.7i) + (-25-8i)x(i) + (-13.6+123.4i)x(0.7+0.7i) )
    = 0.125 x 3.68 = 0.46 ≈ 0 

這樣,我們就使用離散傅立葉變換和逆變換計算出了向量 {ai} 和向量 {bj} 的卷積向量 {ck},如下所示:

{ c7, c6, c5, c4, c3, c2, c1, c0 } = { 0, 0, 0, 0, 24, 46, 65, 38, 16 }

這和我們在前面直接使用向量 {ai} 和向量 {bj} 來計算卷積的結果是一樣的。

但是,這個演算法的時間複雜度還是 O(N2)。我們繞了這麼一大圈,不是白費勁了嗎?

現在就到了關鍵時刻,關鍵在於:直接進行離散傅立葉變換的計算複雜度是 O(N2)。快速傅立葉變換可以計算出與直接計算相同的結果,但只需要 O(N logN) 的計算複雜度。 N logN 和 N2 之間的差別是巨大的。例如,當 N = 106 時,在一個每秒運算百萬次的計算機上,粗略地說,它們之間就是佔用 30 秒 CPU 時間和兩星期 CPU 時間的差別。

快速傅立葉變換的要點如下:一個界長為 N 的離散傅立葉變換可以重新寫成兩個界長各為 N/2 的離散傅立葉變換之和。其中一個變換由原來 N 個點中的偶數點構成,另一個變換由奇數點構成。這個過程可以遞迴地進行下去,直到我們將全部資料細分為界長為 1 的變換。什麼是界長為 1 的傅立葉變換呢?它正是把一個輸入值複製成它的一個輸出值的恆等運算。要實現以上演算法,最容易的情況是原始的 N 為 2 的整冪次項,如果資料集的界長不是 2 的冪次時,則可添上一些零值,直到 2 的下一冪次。在這個演算法中,每遞迴一次需 N 階運算,共需要 log N 次遞迴,所以快速傅立葉變換演算法的時間複雜度是 O(N logN)。

由於快速傅立葉變換是採用了浮點運算,因此我們需要足夠的精度,以使在出現舍入誤差時,結果中每個組成部分的準確整數值仍是可辨認的。長度為 N 的 B 進位制數可產生大到 B2N 階的卷積分量。我們知道,雙精度浮點數的尾數是 53 個二進位,所以:

2 x log2B + log2N + 幾個 x log2log2N < 53

上式中左邊最後一項是為了快速傅立葉變換的舍入誤差。

所以,為了能夠計算儘量大的整數,一般 B 不會取得太大。在計算機程式中經常使用 256 進位制進行運算。但是如果經常需要將計算結果和十進位制互相轉換,則往往使用 100 進位制進行運算。

關於快速傅立葉變換以及卷積定理的更深入的知識,請參閱文末的參考文獻。這一篇隨筆主要是講述相關的原理,在下一篇隨筆中,我將給出一個使用快速傅立葉變換進行任意精度的算術運算的 C# 程式。

順便說一句,我在準備正文的例題的時候,是使用 google 計算器來進行復雜的複數運算的。發現她非常好用。以計算 c2 為例, 只要將要計算的表示式複製到 goole 搜尋欄,然後按回車,就能得到計算結果:

參考文獻:
轉自:http://www.cnblogs.com/skyivben/archive/2008/07/23/1248413.html

相關推薦

變換大數乘法

我們知道,兩個 N 位數字的整數的乘法,如果使用常規的演算法,時間複雜度是 O(N2)。然而,使用快速傅立葉變換,時間複雜度可以降低到 O(N logN loglogN)。 假設我們要計算以下兩個 N 位數字的乘積: a = (aN-1aN-2...a1a0)10 

FFT:快速變換高精度乘法

相信不少人和我一樣,第一次看到傅立葉變換是在演算法書上實現快速高精度乘法的章節,可是又看也看不懂,百度之後更加雲裡霧裡. 今天,我要試圖用簡單但不一定正確的理解,探討快速傅立葉變換(FFT)和高精度乘法之間的關係. 傅立葉級數: 在討論FFT之間,我們要說清楚一下各種傅立

變換小波

無論是影象處理、訊號處理,還是做音視訊處理等方面的研究,總是避不開的傅立葉變換和小波相關知識。在此,網上看到相關知識,很受啟發,特轉載其中圖片過來共勉,然後,根據本人對其中內容作出相關解釋,如下圖所示(注:此圖片來自網路)。 第一、圖中虛線框裡的內容,都應該是在高等

變換影象處理

本文主要介紹的是傅立葉變換在影象處理當中的應用。本文參考:http://blog.csdn.net/masibuaa/article/details/6316319 第一部分介紹傅立葉變換。傅立葉變換

影象變換變換OpenCV實現

程式碼步驟: 讀入影象->傅立葉變換->傅立葉逆變換->讀取影象 int main() { cv::Mat img = cv::imread("lena.jpg"); DFTtransform(img);

(一)連續變換離散變換級數(Fourier Series)

訊號的正交分解到傅立葉級數(FS)一、訊號分解為正交函式二、傅立葉級數的三角形式由(一)可知,可將一個週期為T的訊號f(T),在(t0,t0+T)內表示為三角函式集的線性組合,即:上式即為週期訊號f(t),在區間(t0,t0+T)內的三角傅立葉級數展開式。Ω=2π/T稱為基波

快速變換快速數論變換從站在門外到入門

前言 litble不會FFT和NTT,是自己太蒻了。 學習數學知識需要耐心,所以也請和蒟蒻litble一樣站在門外的人保持耐心來學,加油吧! 另外,litble很好奇,為什麼《數學一本通》講這些東西只講了半頁紙。 複數 參考部落格,同時借了張圖。

離散變換(DFT)和快速變換(FFT)原理實現

目錄 1、影象變換 2、離散傅立葉變換(Discrete Fourier Transform) 3、DFT性質 4、DFT與數字影象處理 5、FFT-快速傅立葉變換 6、DFT與FFT的演算法實現 1. 影象變換 — —數學領域中有很多種變換,如傅立葉變換、拉普拉斯變

補零離散變換的解析度

     離散傅立葉變換(DFT)的輸入是一組離散的值,輸出同樣是一組離散的值。在輸入訊號而言,相鄰兩個取樣點的間隔為取樣時間Ts。在輸出訊號而言,相鄰兩個取樣點的間隔為頻率解析度fs/N,其中fs為取樣頻率,其大小等於1/Ts,N為輸入訊號的取樣點數。這也就是說,DF

卷積變換

                很多朋友和我一樣,工科電子類專業,學了一大堆訊號方面的課,什麼都沒學懂,背了公式考了試,然後畢業了。   先說"卷積有什麼用"這個問題。(有人搶答,"卷積"是為了學習"訊號與系統"這門課的後續章節而存在的。我大吼一聲,把他拖出去槍斃!)   講一個故事:   張三剛剛應聘到了一

Python下opencv使用筆記(十)(影象頻域濾波變換

前面曾經介紹過空間域濾波,空間域濾波就是用各種模板直接與影象進行卷積運算,實現對影象的處理,這種方法直接對影象空間操作,操作簡單,所以也是空間域濾波。 頻域濾波說到底最終可能是和空間域濾波實現相同的功能,比如實現影象的輪廓提取,在空間域濾波中我們使用一個拉普拉

二維陣列、影象的變換(附加反變換濾波演算法)

FFT演算法原理就不解釋了,可以搜尋一下百度即可。 在二維變換中,需要對矩陣進行一行一行,一列一列的FFT變換,具體公式為: F(u,v)=sum(i=0->M-1)sum(j=0->N-1)f(i, j) * exp(-j2πui/M-j*2π

數字影象處理成長之路4: C語言離散變換(DFT)

這幾天一直學習傅立葉變換,看了很多國內外資料,網上講原理的很多,到了程式實現這塊大多是Matlab,opencv等,這些軟體的api對於我們理解DFT在計算機中的實現並沒有多大幫助。於是想用C/C++實現DFT,經過不斷的閱讀與程式設計實驗,最終程式有了還算滿意

算法系列之二十三:離散變換之音訊播放頻譜顯示

        頻譜和均衡器,幾乎是媒體播放程式的必備物件,沒有這兩個功能的媒體播放程式會被認為不夠專業,現在主流的播放器都具備這兩個功能,foobar 2000的十八段均衡器就曾經讓很多人著迷。我用Winamp播放音樂(AOL已經在2013年12月20日停止了Winamp的

【快速變換】【FFT】【WikiOI】【P3132】【高精度練習之超大整數乘法

FFT,快速傅立葉變換,蒟蒻看別人的題解都太深奧,看不懂,好不容易學會,以蒟蒻的理解寫給那些想學FFT卻又找不到合適的資料的OIer,蒟蒻理解有限,難免有許多錯誤,請大家多多包涵。 快速傅立葉變換 百度的各種講解都TM扯什麼頻率什麼的,蒟蒻完全看不懂,後來認真看了看算導

使用快速變換計算大整數乘法-程式碼

125 ///<summary>126 /// 比較 x[0..n-1] 和 y[0..n-1] 127 ///</summary>128 ///<param name="x">第一運算元 x[0..n-1]</param>129 ///<par

Matlab卷積變換的問題

為什麼兩個二維的矩陣的卷積結果卻不等於他們傅立葉變換後乘積的傅立葉逆變換呢?理論上是相等的,用一維矩陣驗證是相等的啊困惑?望高手賜教!謝謝!使用“時域卷積與頻域相乘等效為傅立葉變換對”的結論需要注意兩個條件:1)卷積為圓周卷積,而不是線性卷積;2)頻域相乘為點乘。matlab中的conv以及conv2函式都是

訊號系統之(二)級數和變換

    張三愉快地工作著,直到有一天,平靜的生活被打破。經理拿來了一個小的電子裝置,接到示波器上面,對張三說:"看,這個小裝置產生的波形根本沒法用一個簡單的函式來說明,而且,它連續不斷的發出訊號!不過幸好,這個連續訊號是每隔一段時間就重複一次的。張三,你來測試以下,連到我們的裝置上,會產生什麼輸出波形!"張三

【轉載】小波變換變換

一、基的概念     小波函式和正餘弦函式都是基,訊號都可以分成無窮多個他們的和。而展開係數就是基與訊號之間的內積,更通俗的說是投影。展開係數大的,說明訊號和基是足夠相似的,這就是相似性檢測的思想。但我們必須明確的是,傅立葉是0-2π標準正交基,而小波是-inf到inf

多項式快速變換

文章寫的有點急。有錯誤的地方望指出 我學習 FFT 是一個比較慢的過程。 期間反反覆覆。 我寫這篇博文只是一個非常淺顯的理解。同時也可以幫助初學者在學習FFT的時候。有所偏重。避免太多思維上的負擔。 直