數論變換
正文
在快速傅立葉變換(FFT)中,變換因子![數論變換](/img/9/09c/ml2ZuM3X3cTMxQDOycTMxgDM5ETMwADMwADMwADMwADMxAzLxEzL3czLt92YucmbvRWdo5Cd0FmLxE2LvoDc0RHa.jpg)
![數論變換](/img/5/b06/ml2ZuM3X2cDNzQDOycTMxgDM5ETMwADMwADMwADMwADMxAzLxEzL2czLt92YucmbvRWdo5Cd0FmLyE2LvoDc0RHa.jpg)
![數論變換](/img/4/c46/ml2ZuM3X4IDOxEDM0AzMxgDM5ETMwADMwADMwADMwADMxAzLzEzL4IzLt92YucmbvRWdo5Cd0FmLxE2LvoDc0RHa.jpg)
(1)
把一個給定的正整數M稱為模(mod),如果用M去除任意兩個整數α和β,所得餘數相同,便稱作α和β對模M同餘,記作
α 呏β(modM) (2)
因此,同餘式運算規則是以正整數M為模的整數環(域上所定義的一種線性正交變換。
在式(1)中,整數a、N、M三者之間必須滿足如下關係:
aN呏1(modM) (3)
滿足上式的最小正整數N叫做a對模M的指數,a是1的N次根,或簡稱a是N 階的。例如,a為2時對模7的指數是3,對模11的指數是10。
在數論變換中要求找到合適的a、N和M值。所選擇的N應當是高複合數。但如採用2的乘方,就能構成像FFT算法那樣的信號流圖,並且希望選取的N值足夠大,以滿足實際需要。其次,所選取的a應當能用簡便的方法實現乘法運算,因為在計算機中乘法運算最花費時間;如果a是2的乘方,可以用移位操作實現a的乘方運算,因而比較方便。又由於是模運算,所以不存在捨入誤差。此外,M最好也是位數不太多的二進制數,而且必須是大於2的素數。
梅森數論變換 在數論變換的一般公式 (1)中的模M採用梅森數時,就稱為梅森數論變換。麥森數為
M=2k-1 (4)
它是一奇數。令k=PQ,P為素數,便有
① a=2,N=P,aN=2P呏1【mod(2P-1)】,但P是素數,N=P也是素數,不是高複合數。
② a=-2,N=2P,(-2)
![數論變換](/img/e/e37/ml2ZuM3X3MDM3EDM0AzMxgDM5ETMwADMwADMwADMwADMxAzLzEzL3MzLt92YucmbvRWdo5Cd0FmLxE2LvoDc0RHa.jpg)
費馬數論變換 在數論變換中比較合理的模M是選用費馬數,即
Ft=2b+1b=2t (5)
前幾個Ft的值是F0=3;F1=5;F2=17;F3=257;F4=65537;這五個費馬數都是素數,而F5和F6都是複合數:
F5=4294967297=641×6700417
F6=274177×67280421310721在t>4的情況下,還沒有發現一個費馬數是素數。Ft稱為第t個費馬數,模Ft的計算可用b位算術運算來完成。信號所占用的位數和濾波器係數決定了在輸出中不引起溢出誤差所需用的b值,實際用的b值比信號所占用位數的兩倍稍大。為了能夠採用費馬數,如果以溢出條件得到的b值不是一個2的冪時,應該把它增加到接近的2的冪數。
因為是按模M=Ft費馬數進行算術運算,所以長為N=2m的序數的費馬數論變換及其反變換表達式可寫成
aN呏1(mod Ft) (7)
的最小正整數。
費馬數論變換和傅立葉變換相類似。當N =2m時,數論變換的快速計算法的信號流圖和 FFT的算法信號流圖也是一致的,只是把WN換成a。但是,費馬數論變換的基本函式是由2的方冪構成,不需要使用乘法,僅為移位操作,其運算速度快於 FFT算法。加上費馬數論變換算法是模算術運算,不存在捨入誤差,從而能得到高精度的褶積。此外,由於FFT的基本函式是三角函式,需要預先存儲這些基本函式,而費馬數論變換算法卻不需要存儲基本函式。費馬數論變換的缺點主要是它沒有物理意義,在信號處理中不能運用中間過程;運算需要的字長與變換點數之間存在著嚴格的關係,隨著輸入序列的增長往往需要很長的字長。
參考書目
何振亞著:《數位訊號處理的理論與套用》,人民郵電出版社,北京,1983。