欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)字信號(hào)的改良編碼/解碼,尤其是用置換碼進(jìn)行矢量量化的編碼/解碼的制作方法

文檔序號(hào):7512239閱讀:215來源:國知局
專利名稱:數(shù)字信號(hào)的改良編碼/解碼,尤其是用置換碼進(jìn)行矢量量化的編碼/解碼的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及諸如音頻、視頻以及更為廣泛的多媒體信號(hào)之類的數(shù)字信號(hào)的編碼/解碼,以用于其存儲(chǔ)或傳輸。本發(fā)明特別提出了一種解決方案,所述解決方案用于解決由置換碼的編碼和解碼引起的問題。
通常,本發(fā)明也應(yīng)用于信源編碼的同類:信道編碼或“調(diào)制”。
根據(jù)本發(fā)明的數(shù)字信號(hào)的壓縮編碼/解碼對(duì)于語音或音頻信號(hào)頻率編碼器的變換系數(shù)的量化非常有用。
矢量量化 一種廣泛應(yīng)用的數(shù)字信號(hào)壓縮解決方案為矢量量化。矢量量化通過選自有限集的相同維數(shù)的矢量來表征輸入矢量。M級(jí)(或M個(gè)“碼矢量”)的量化器為輸入矢量集的非雙射應(yīng)用,通常是將實(shí)歐氏空間Rn或Rn的子集映射到具有M個(gè)分離的元素的、Rn的有限態(tài)子集Y中:Y={y0,y1,...yM-1}。
Y被稱為復(fù)制字母表或“字典”甚或“目錄”,它的碼矢量元素被稱為“碼字”(或“輸出點(diǎn)”或甚至是“表示(representative)”)。
用于量化器的每一維的比特率(或其“分辨率”)r可由關(guān)系式定義: 在矢量量化中,將n個(gè)樣本的塊作為n維矢量來處理。根據(jù)信源編碼理論,當(dāng)維數(shù)變得很大時(shí),矢量量化的性能逼近信源失真比特率的極限?;谑噶苛炕鞯淖顑?yōu)性所必須的條件,矢量量化器字典可用統(tǒng)計(jì)學(xué)的方法如通用的勞埃德算法(GLA)設(shè)計(jì)。這樣獲得的統(tǒng)計(jì)學(xué)的矢量量化器不具有結(jié)構(gòu),從而使得它們的開發(fā)在計(jì)算和存儲(chǔ)資源方面的成本非常昂貴,因?yàn)榫幋a和存儲(chǔ)二者的復(fù)雜性都是與n2nr成比例的。
參考

圖1A,三個(gè)主要的運(yùn)算用到了矢量量化器:兩個(gè)運(yùn)算在編碼中用到,一個(gè)運(yùn)算在解碼中用到。通過首先從字典中選擇碼矢量來對(duì)輸入矢量進(jìn)行編碼(步驟COD)。選擇的碼矢量是與輸入矢量最類似的碼矢量(圖1A中的運(yùn)算OP1)。然后,確定(步驟IND)是將該碼矢量的索引進(jìn)行傳輸還是存儲(chǔ)(圖1A中的運(yùn)算OP2)。在解碼器中(步驟DEC),根據(jù)其索引確定該碼矢量(圖1A中的運(yùn)算OP3)。
在調(diào)制中,以不同的順序應(yīng)用圖1A中的三個(gè)運(yùn)算OP1、OP2和OP3。圖1B示出了調(diào)制/量化的二元性,規(guī)定了從索引到碼矢量的轉(zhuǎn)換(圖1B的COD’步驟,其對(duì)應(yīng)于圖1A中的運(yùn)算OP3)。然后,在通過受噪聲影響的信道進(jìn)行傳輸后,搜索與接收的矢量最接近的碼矢量(圖1B的DEC’步驟,其對(duì)應(yīng)于圖1A中的運(yùn)算OP1)。最后,對(duì)碼矢量索引的解碼是第三步(圖1B的IND’步驟,其對(duì)應(yīng)于圖1A中的運(yùn)算OP2)。
根據(jù)維數(shù)、矢量和比特率,復(fù)雜性指數(shù)的增加限制了具有小的維數(shù)和/或低比特率的無結(jié)構(gòu)的矢量量化器的實(shí)時(shí)應(yīng)用。對(duì)于無結(jié)構(gòu)的矢量量化器,對(duì)最近鄰居的搜索(運(yùn)算OP1)要求在字典所有的元素中進(jìn)行窮舉搜索,以選擇與輸入矢量之間的距離最小的字典元素。后兩個(gè)運(yùn)算(索引OP2和轉(zhuǎn)換運(yùn)算OP3)通常通過對(duì)表的簡(jiǎn)單閱讀來執(zhí)行。然而這對(duì)于寄存器空間是非常昂貴的。為了克服尺寸和維度的限制,研究了基本矢量量化器的幾個(gè)變體。這些變體試圖修補(bǔ)字典結(jié)構(gòu)的缺乏并從而減少復(fù)雜性,但這是以質(zhì)量為代價(jià)的。但是,性能/復(fù)雜性的平衡得到了提高,使得它能夠提高分辨率的范圍或維數(shù),以便矢量量化器能夠有效地應(yīng)用。提出了許多結(jié)構(gòu)的矢量量化器方案,特別是,實(shí)現(xiàn)了下面描述的“置換碼”的矢量量化器。
置換碼 在“置換碼”矢量量化器中,碼矢量是通過(按字母順序)對(duì)第一碼矢量的各分量進(jìn)行置換而獲得的,其中該第一碼矢量稱為“前導(dǎo)(leader)”(或“前導(dǎo)矢量”)。這些分量的值取自大小為q的字母表A={a0,a1,...,aq-1}(其中,當(dāng)i≠j時(shí),ai≠aj)。分量ai是實(shí)數(shù)(或整數(shù))。權(quán)wi(其中i是0到q-1范圍內(nèi)的索引)是字母表中字母ai的重復(fù)次數(shù)。權(quán)wi是正整數(shù),以使 按照慣例,字母表的值滿足a0>a1>...>aq-1。前導(dǎo)的n個(gè)分量從位置0到位置(n-1)以降序排列。因此,前導(dǎo)矢量y0是如下形式的n維矢量:
可以理解,可選擇不同的分量次序,例如為a0<a1<...<aq-1。
前導(dǎo)矢量被稱為“帶符號(hào)前導(dǎo)”,且置換碼被認(rèn)為是“屬于類型I”。其它的碼矢量通過對(duì)y0的分量進(jìn)行置換而獲得。置換的總次數(shù)M為: 還有另一類型的置換碼(類型II)。其前導(dǎo)矢量具有如上相同的形式,但是其分量必須是正的(a0>a1>...>aq-1≥0)。通過為其它碼矢量分配所有可能的標(biāo)記組合,其它碼矢量也通過對(duì)y0的分量進(jìn)行置換而獲得。置換的總次數(shù)M為: 其中,如果aq-1>0,則h=n,否則,h=n-wq-1。
在該情況下,前導(dǎo)矢量也稱為絕對(duì)前導(dǎo)。
“置換碼”矢量量化器已被推廣到置換碼的組合(并集),且最近該置換碼聯(lián)合結(jié)構(gòu)已經(jīng)推廣到可變維數(shù)和分辨率的矢量量化中(在該申請(qǐng)人的申請(qǐng)文件WO-04/00219中)。置換碼不僅用于統(tǒng)計(jì)矢量量化,還在使用高度結(jié)構(gòu)化字典的代數(shù)矢量量化中由點(diǎn)的規(guī)則排列或糾錯(cuò)碼得到。置換碼還用于調(diào)制中。
置換碼結(jié)構(gòu)的使用考慮到了最佳的和快速的最近鄰域研究算法的發(fā)展(圖1A中的運(yùn)算OP1)。然而,碼矢量的編索引(或編號(hào))(圖1A中的運(yùn)算OP2)和反向譯碼運(yùn)算(圖1A中的運(yùn)算OP3)比非結(jié)構(gòu)化的矢量量化情況需要更多的計(jì)算。
有多種列舉置換的方法。Schalkwijk算法是這些方法的其中之一: “用于信源編碼的算法(An algorithm for source coding)”,由Schalkwijk J.P.M發(fā)表在1972年5月的IEEE Trans.on InformationTheory的卷IT-18,N°3,第395-399頁。
使用組合分析,這些技術(shù)能夠?yàn)橹脫Q碼的碼矢量編索引(運(yùn)算OP2)且也能完成反向索引譯碼運(yùn)算(運(yùn)算OP3)。在置換編索引算法中,通常使用的Schalkwijk算法回顧如下,例如在標(biāo)準(zhǔn)中: -[3GPP TS 26.273](ANSI-C code for the Fixed-point ExtendedAMR-Wideband(AMR-WB+);V6.1.0(2005-06)(第6版)), -以及[3GPP TS 26.304](Extended Adaptive Multi-Rate-Wideband(AMR-WB+);Floating-point ANSI-C code;V6.1.0(2005-06)(第6版),2005年6月)。
在編碼中計(jì)算置換的秩(圖1A中的運(yùn)算OP2) 此步驟包括為矢量y=(y0,y1...,yn-1)的分量的所有可能的置換進(jìn)行排序和編索引。該次序是按詞典順序的,且該索引在本文中稱為“秩(rank)”。計(jì)算矢量y的秩包括計(jì)算與y相關(guān)聯(lián)的矢量D=(d0,d1...,dn-1)的秩,從而使得當(dāng)且僅當(dāng)yk=ad時(shí),dk的索引值為d。
例如,維數(shù)為n=8的矢量y包括如下分量: y=(4,2,4,0,0,4,4,2) 通過A={4,2,0},其中,a0=4,a1=2且a2=0,給出了具有3個(gè)(q=3)字母的字母表(不同值的分量)。
矢量y則與矢量D=(0,1,0,2,2,0,0,1)相關(guān)聯(lián),其分量是字母表A的q個(gè)字母的簡(jiǎn)單索引。
y和D的秩是相同的,但是矢量D的定義減少了計(jì)算序列D的秩所需的運(yùn)算,其中序列D的值包含在集{0,1,...,q-1}中(所包含的元素?cái)?shù)目與字母表{a0,a1,...,aq-1}相同)。
由于矢量y和D各自分量的出現(xiàn)是相同的,所以它們的權(quán)是相同的。中間權(quán)

也被定義為與分量(yk,yk+1...,yn-1)的矢量的權(quán),因此其對(duì)應(yīng)于被截短為剩下位置k到n-1的矢量y。因而: 其中,δ(x,y)是Kronecker算子(如果x=y(tǒng),則δ(x,y)=1,否則,δ(x,y)=0)。
令 通過組合分析,矢量y的秩t可通過以下公式計(jì)算: 其中且(-1)?。健? (5) 該公式能夠簡(jiǎn)化如下: 經(jīng)常使用的就是公式(6),因此本文采用此公式。在下文中,將

稱為“次序k的部分秩(partial rank)”,其中: 對(duì)秩進(jìn)行譯碼(運(yùn)算OP3):根據(jù)其索引確定置換 對(duì)秩t進(jìn)行譯碼需要獲取與y相關(guān)聯(lián)的矢量D=(d0,d1,...,dn-1)。一種連續(xù)搜索dk的方法描述如下。分量d0首先被確定,然后是分量d1,...到分量dn-1。
*d0的確定: 通過利用包含不等式的公式找到d0: 對(duì)于d=0,...,q-1,項(xiàng)(n-1)!、t、

和值

都是已知的。為了得到d0的值,將d0=0用作開始點(diǎn),且d0連續(xù)地增1直到滿足公式(8)。通過將部分秩代入公式(8),值d0應(yīng)使: 其中, *d1的確定: 為了找到d1,利用如下關(guān)系式: 對(duì)于d=0,...,q-1,值

能按如下方法根據(jù)

的值推導(dǎo)出: -如果d=d0,則以及 -如果d≠d0,則(只要d不等于d0,則重復(fù)

)。
我們回到與確定分量d0相同的問題。為了找到d1的值,將d1=0用作開始點(diǎn),且d1連續(xù)地增1直到滿足不等式(9)()。
*其它dk的確定 之后的dk的計(jì)算是從上述情況推導(dǎo)出來的。為了找到dk的值,將dk=0用作開始點(diǎn),且dk連續(xù)地增1直到滿足不等式 一旦矢量D=(d0,...,dn-1)被譯碼出,則通過簡(jiǎn)單的字母表變換從中推導(dǎo)出矢量y。
現(xiàn)有技術(shù)的狀況和問題 置換碼的編索引和反向運(yùn)算都是復(fù)雜運(yùn)算。利用的算法應(yīng)用了組合分析。組合的編索引和反向運(yùn)算需要階乘乘積的除法。
除法的復(fù)雜性 盡管在集成電路和信號(hào)處理器上已取得了進(jìn)步,但是除法仍然是復(fù)雜的運(yùn)算。通常,一個(gè)16位的整數(shù)除以一個(gè)16位整數(shù)花費(fèi)的時(shí)間比它們的乘法花費(fèi)的時(shí)間多18倍。一個(gè)32位整數(shù)除以一個(gè)16位整數(shù)的除法的權(quán)是32,而它們的乘法的權(quán)是5。
變量的構(gòu)造(framing) 除法的成本不是唯一的問題。變量構(gòu)造是另一問題,如下面表1所示。
只有小于或等于8的整數(shù)的階乘可用16位整字表示。對(duì)于大于12的數(shù),用32位的整字都不能表示其階乘。
而且,運(yùn)算的復(fù)雜性還隨著用于表示變量的位數(shù)的增多而增加。因而,用16位整數(shù)除32位整數(shù)的除法(權(quán)32)的復(fù)雜度幾乎是用16位整數(shù)除16位整數(shù)的除法(權(quán)18)的復(fù)雜度的兩倍。
表1:整數(shù)階乘 用于減少運(yùn)算OP1復(fù)雜度的解決方法已被提出。而運(yùn)算OP2和運(yùn)算OP3的復(fù)雜度的問題并未很好地解決。然而,值得注意的是,在本申請(qǐng)人的TDAC編碼/譯碼器或3GPP-AMR-WB+譯碼器中,已基于Schalkwijk公式對(duì)編碼和譯碼算法進(jìn)行了簡(jiǎn)化。
置換列舉的簡(jiǎn)化和反向運(yùn)算(運(yùn)算OP2和運(yùn)算OP3)的簡(jiǎn)化 置換的秩t的計(jì)算和反向運(yùn)算的速度通過如下描述的簡(jiǎn)化進(jìn)行了改進(jìn),其中該簡(jiǎn)化是針對(duì)n項(xiàng)

的計(jì)算,其定義回顧如下: (0≤k≤n-1) 前兩項(xiàng)用于減少編碼和譯碼的復(fù)雜度。第三項(xiàng)用在編碼中,且最后兩項(xiàng)用在譯碼中。
編碼技術(shù)如圖2和圖3所示。特別地,圖3包括通過現(xiàn)有技術(shù)意義下的Schalkwijk公式計(jì)算秩,而圖2圖解說明了基本步驟(在圖2中用“EP-n”指定第n個(gè)基本步驟)。
參考圖2,處理過程由步驟EP-1開始,在該步驟中,恢復(fù)矢量y=(y0,...,yn-1)的分量。隨后的步驟EP-2包括計(jì)算用于矢量A=(a0,...,aq-1)的字母表的元素并確定最大索引q。為此,在設(shè)置了q=1,a0=y(tǒng)0的初始化步驟EP-21之后,對(duì)1到n-1之間的索引k進(jìn)行循環(huán),以按如下方法搜索元素aq(在EP-26結(jié)束測(cè)試,否則在EP-27中遞增): -如果當(dāng)前索引為k的分量yk不在元素{a0,...,aq-1}中(測(cè)試EP-22),那么,必須分配新的元素aq以使aq=y(tǒng)k加入到集{a0,...,aq-1}中(步驟EP-23),并且q必須增1(步驟EP-25)。
隨后的基本步驟EP-3是矢量D=(d0,...,dn-1)的計(jì)算,如下所示: -對(duì)于范圍為0到n-1的k(步驟EP-31用于將k初始化為0,在EP-37中對(duì)k進(jìn)行結(jié)束測(cè)試,否則在EP-38中使k遞增),在索引集(0,...,q-1)中找到值d,以使yk=ad(在循環(huán)中的EP-33對(duì)d進(jìn)行測(cè)試,否則在EP-36中遞增為d=d+1)。
參考圖3,其描述了在圖2說明的基本處理過程之后的用于計(jì)算秩t的步驟。圖3中說明的步驟以“CA-n”來表示現(xiàn)有技術(shù)意義下的第n個(gè)編碼步驟。
步驟CA-1將秩t初始化為0,將變量P初始化為1(在步驟CA-13中用作秩計(jì)算的分母),以及將q個(gè)權(quán)w0,...,wq-1初始化為0。
在此,將k的值從n-1遞減到0(步驟CA-2用于將k初始化為n-1,在CA-14結(jié)束測(cè)試,否則在CA-15遞減)。該選擇的益處隨后描述。然后使用在基本步驟EP-3中獲得的、矢量D的分量dk,對(duì)于當(dāng)前k,設(shè)置d=dk(步驟CA-3)。對(duì)相關(guān)的權(quán)wd進(jìn)行更新(在步驟CA-4中,wd=wd+1)以估計(jì)項(xiàng)P(在步驟CA-5中,P=P×wd)。將在對(duì)應(yīng)于步驟CA-13的秩的計(jì)算中用作分子的和S初始化為0(步驟CA-6),然后對(duì)權(quán)wi的索引i進(jìn)行循環(huán)(在CA-9結(jié)束測(cè)試,否則在CA-10遞減為d-1),以更新和S(在步驟CA-8中,S=S+wi)。在步驟CA-13計(jì)算秩t之前,進(jìn)行檢查以確保和S不為0(測(cè)試CA-11)。該實(shí)現(xiàn)的益處將在隨后描述。
秩t的計(jì)算(步驟CA-13)包括階乘項(xiàng)(n-k-1)!,該計(jì)算如下: t=t+(S/P)(n-k-1)! 不在秩t每次更新時(shí)計(jì)算項(xiàng)(n-k-1)!,而是優(yōu)選地,在存儲(chǔ)器中預(yù)記錄這些值,且使用簡(jiǎn)單的存儲(chǔ)器存取(步驟CA-12)來獲得(n-k-1)!的當(dāng)前值。
因此,圖3說明的處理過程的一些優(yōu)點(diǎn)將被本發(fā)明的實(shí)現(xiàn)再次吸收。這些優(yōu)點(diǎn)詳細(xì)描述如下。
*階乘的存儲(chǔ) 為了避免實(shí)時(shí)計(jì)算項(xiàng)(n-k-1)!和

!,對(duì)n+1個(gè)階乘值(0!,1!,...,n!)進(jìn)行預(yù)計(jì)算和存儲(chǔ)。如果維數(shù)n的變化是有限的(n≤nmax),則對(duì)值0!,1!,...,nmax!進(jìn)行預(yù)計(jì)算和存儲(chǔ)。
*為了避免進(jìn)行除法而在中間權(quán)累積時(shí)進(jìn)行測(cè)試 如果項(xiàng)為0,那么,計(jì)算 則是無意義的。現(xiàn)在,該項(xiàng)通常為零,尤其是在最后的位置上(k接近n-1)。通過增加對(duì)該項(xiàng)的零狀態(tài)的測(cè)試(圖3的測(cè)試CA-11),則可避免進(jìn)行除法(和乘法)。由于除法的計(jì)算比測(cè)試復(fù)雜得多,因此在復(fù)雜性方面的節(jié)約是很有意義的。
*編碼中位置的反向循環(huán) 通過將

增1且通過重復(fù)d≠dk的其它值

權(quán)

(其中d=0,1,..,q-1)可根據(jù)權(quán)

推導(dǎo)出來。然后,則能夠創(chuàng)建循環(huán)(圖3中的步驟CA-2、CA-14、CA-15),從矢量的最后位置(k=n-1)工作到第一位置(k=0)。在初始化為1之后,該“反向”循環(huán)能夠以這樣的方式計(jì)算項(xiàng)Pk: 其中,對(duì)于每次迭代只進(jìn)行遞增和乘法,或如下計(jì)算: 以及 還可單獨(dú)處理最后兩個(gè)位置(k=n-1和k=n-2)。事實(shí)上, ●對(duì)于最后的位置(k=n-1),因此 ●對(duì)于倒數(shù)第二的位置(k=n-2), 如果dn-2>dn-1,則 且(n-1-k)!=1!, 因此, 否則(dn-2≤dn-1),因此 其中,如果dn-2=dn-1,則Pn-2=2,否則,Pn-2=1。
還可提供如下的其它有利的實(shí)現(xiàn)細(xì)節(jié)。
*消除譯碼中的除法 當(dāng)搜索d0時(shí),為了避免譯碼中的除法,不等式(8)能夠以如下形式重新表示為: 類似地,通過以如下形式重新表示不等式(9),也在搜索d1時(shí)消除除法: 或甚至 應(yīng)該注意的是,雖然能夠在搜索dk(0≤k≤n-1)時(shí)消除除法,但是仍然需要執(zhí)行(n-1)次除法來計(jì)算
*在譯碼時(shí)對(duì)權(quán)值進(jìn)行測(cè)試 在最后位置上,對(duì)于某些d值,(對(duì)于

分量占據(jù)了位置k之前位置的d值)。因此,對(duì)于這些d值,計(jì)算不等式(8)和不等式(9)的各項(xiàng)是沒有意義的。
現(xiàn)有技術(shù)的其它問題:變量的構(gòu)造 變量的構(gòu)造問題已經(jīng)在本申請(qǐng)人的TDAC編碼中解決了。
第一解決方法是將大于12的維數(shù)的運(yùn)算處理與較小維數(shù)的運(yùn)算處理區(qū)分開。對(duì)于小的維數(shù)(n<12),在32位的無符號(hào)整數(shù)上完成計(jì)算。對(duì)于較大的維數(shù),則使用雙精度浮點(diǎn)變量,其代價(jià)是將增加計(jì)算復(fù)雜性(浮點(diǎn)雙精度運(yùn)算比其整數(shù)精度等價(jià)的運(yùn)算更昂貴)以及所需的存儲(chǔ)器容量。
而且,如果將最大精度限制為無符號(hào)的32位整數(shù)(由定點(diǎn)處理器實(shí)現(xiàn)),大于12的整數(shù)階乘則不能直接預(yù)存,且維數(shù)大于12的矢量必須被分開地編碼。為了解決該問題,更完善的解決方法利用以2j×r的形式表示階乘n!的尾數(shù)和指數(shù)的偽浮點(diǎn)表示法。該分解如下表2所示。將n!(n小于或等于16)的存儲(chǔ)簡(jiǎn)化為存儲(chǔ)最大精度為30位的r以及對(duì)應(yīng)于簡(jiǎn)單位偏移的指數(shù)j。
表2:階乘的因數(shù)分解 因此,現(xiàn)有技術(shù)中的技術(shù)大多不能解決有限精度(尤其是定點(diǎn))變量的構(gòu)造問題。雖然TDAC編碼的實(shí)現(xiàn)解決了構(gòu)造問題,但其不能避免兩個(gè)整數(shù)的昂貴除法。而且,對(duì)于高維數(shù),中間計(jì)算(例如,部分秩

的分子和分母)可接近飽和。在該情況下,上述的簡(jiǎn)化不能用在譯碼處理中,且需要還原為不等式(8)和不等式(9)的公式,因而再次引入了大量的除法。
不同于Schalkwijk技術(shù)的列舉技術(shù)也遇到了相同的問題。假設(shè)列舉技術(shù)也使用組合分析,其則必須計(jì)算階乘的乘積及其除法。
本發(fā)明旨在改善這種情況。
為此,首先提出了一種使用置換碼對(duì)數(shù)字信號(hào)進(jìn)行編碼/譯碼的方法,所述置換碼包括組合表示的計(jì)算,其中所述組合表示由素因數(shù)冪分解來表示,并通過對(duì)所選整數(shù)的分解的、預(yù)先記錄的表示進(jìn)行存儲(chǔ)器讀取來確定。
因而本發(fā)明提供了對(duì)與置換碼的索引及反運(yùn)算都相關(guān)的問題的有效方案。該方案同時(shí)解決了變量的構(gòu)造和除法的問題。
有效地,在有利的實(shí)施中,所述預(yù)先記錄的表示包括表示用于每個(gè)所選整數(shù)的指數(shù)的值,所述值分別與表示連續(xù)素?cái)?shù)的值相關(guān)聯(lián)地存儲(chǔ)。
現(xiàn)有技術(shù)中與變量構(gòu)造相關(guān)的問題因而被解決。
對(duì)于利用階乘項(xiàng),變量構(gòu)造問題就更加嚴(yán)重。
在有利的實(shí)施中,為了在組合表示包括階乘值時(shí)利用所述組合表示,所述預(yù)先記錄的表示至少包括階乘值的分解的表示。
因而該實(shí)施可以去除變量構(gòu)造的限制,因此將通常設(shè)定的限制推回為相關(guān)置換碼的維數(shù)n。
根據(jù)另一有利的特征,所述組合表示中的至少一個(gè)包括整數(shù)分子除以整數(shù)分母的商,并且所述商由素因數(shù)的冪分解來表示,其中每個(gè)冪均為分配給同一個(gè)素?cái)?shù)的、分別與所述分子和所述分母相關(guān)聯(lián)的指數(shù)的差。
因而通過將該計(jì)算以簡(jiǎn)單的減法計(jì)算替代,解決了與現(xiàn)有技術(shù)中的除法計(jì)算相關(guān)的問題。
在第一實(shí)施方式中,提供了存儲(chǔ)器,所述存儲(chǔ)器進(jìn)行尋址以檢索上述所選整數(shù)之一的預(yù)先記錄的分解。為此,將所選整數(shù)的預(yù)先記錄的表示存儲(chǔ)在可尋址的存儲(chǔ)器中,所述存儲(chǔ)器的尋址提供待分配至各素?cái)?shù)的一連串指數(shù),以重構(gòu)所選整數(shù)。
優(yōu)選地,所選整數(shù)的預(yù)先記錄的表示以一連串地址的方式存儲(chǔ),其中,用于每個(gè)素?cái)?shù)的地址均給出待分配至所述素?cái)?shù)的指數(shù),以重構(gòu)所述所選整數(shù)。
根據(jù)第一實(shí)施方式的該實(shí)施將在下文中指定為“分解的展開表示”。
作為一種變體,在第二實(shí)施方式中,所述預(yù)先記錄的表示以包括一連串位組的字的形式存儲(chǔ),其中每個(gè)位組均具有: -取決于素?cái)?shù)的權(quán),以及 -取決于將與所述素?cái)?shù)相關(guān)聯(lián)的指數(shù)的值。
優(yōu)選地,然后通過將至少一個(gè)局部掩碼連續(xù)地應(yīng)用于位字,并通過根據(jù)位權(quán)的連續(xù)偏移和剩余位的讀取,而確定所述素因數(shù)的冪。
根據(jù)第二實(shí)施方式的該實(shí)施將在下文中指定為“分解的緊湊表示”。
對(duì)于組合表示的計(jì)算的相同方法通常可根據(jù)以下步驟實(shí)現(xiàn): -根據(jù)所選整數(shù)識(shí)別出現(xiàn)在形成所述組合表示的乘積和/或商中的項(xiàng); -在存儲(chǔ)器中讀取包括在所述項(xiàng)的素因數(shù)分解中的指數(shù);以及 -加上和/或減去所讀取的指數(shù),以確定包括在所述組合表示的素因數(shù)冪分解中的所述指數(shù),并因此根據(jù)所述組合表示的素因數(shù)冪分解計(jì)算所述組合表示。
關(guān)于乘積的計(jì)算(其將被循環(huán)執(zhí)行并且在每一循環(huán)上均包括新的項(xiàng)),可有利地暫時(shí)存儲(chǔ)用于前一循環(huán)的乘積計(jì)算的分解。因此,如果該方法包括用于計(jì)算乘積的循環(huán)步驟,在每一循環(huán)上,所述乘積包括與在前一循環(huán)上確定的乘積相乘的項(xiàng),則: -所述在前一循環(huán)上確定的乘積以素因數(shù)冪分解的形式保留在存儲(chǔ)器中; -與所述在前一循環(huán)上確定的乘積相乘的所述項(xiàng)是其分解已被預(yù)先記錄的所選整數(shù)之一;以及 -為了在當(dāng)前循環(huán)上確定所述乘積,逐一地對(duì)于每個(gè)素?cái)?shù),將根據(jù)在所述前一循環(huán)上確定的乘積的分解和與所述乘積相乘的所述項(xiàng)的分解推導(dǎo)出的所述指數(shù)相加。
類似地,如果所述方法包括用于計(jì)算除法的循環(huán)步驟,在每一循環(huán)上,所述除法包括對(duì)在前一循環(huán)上確定的商進(jìn)行除法的項(xiàng): -所述在前一循環(huán)上確定的商以素因數(shù)冪分解的形式保留在存儲(chǔ)器中; -除所述商的所述項(xiàng)是其分解已被預(yù)先記錄的所選整數(shù)之一;以及 -為了在當(dāng)前循環(huán)上確定所述除法,逐一地對(duì)于每個(gè)素?cái)?shù),從所述在前一循環(huán)上確定的商推到出的指數(shù)中減去由所述項(xiàng)的分解推導(dǎo)的指數(shù)。
當(dāng)前計(jì)算的乘積和/商的中間分解的所述暫時(shí)存儲(chǔ)在確定循環(huán)的部分秩時(shí)尤其有利,所述循環(huán)的部分秩的累積表示置換秩。
因此,在本發(fā)明的有利實(shí)施中,所述置換碼包括計(jì)算表示置換的秩的量,所述量包括部分秩的累積,因而每一部分秩均對(duì)應(yīng)于所述組合表示中的一個(gè)。
當(dāng)對(duì)矢量量化的數(shù)字信號(hào)進(jìn)行編碼時(shí),可以使用置換秩的計(jì)算(OP2),以對(duì)前導(dǎo)矢量的分量的置換進(jìn)行索引,所述置換已經(jīng)在先前的步驟(OP1)中執(zhí)行以確定最接近輸出矢量的碼矢量。
類似地,當(dāng)對(duì)矢量量化的數(shù)字信號(hào)進(jìn)行譯碼時(shí),假定根據(jù)置換秩的給定值進(jìn)行置換秩的估計(jì): -根據(jù)待構(gòu)造的碼矢量的至少一個(gè)假定分量(dk),計(jì)算表示與所述給定值接近的置換秩的至少一個(gè)量(OP3); -如果所述量滿足與所述秩的所述給定值的接近條件,那么所述假定分量(dk)的選擇便生效。
在示例性的實(shí)施中,如果所述秩(t)的所述給定值能夠處于到與所述假定分量(dk)相關(guān)的部分秩的累積值與到與所述假定分量加一后對(duì)應(yīng)的分量(dk+1)相關(guān)的部分秩的累積值之間,則滿足所述接近條件。
因此,在Schalkwijk列舉的情況下,所述接近條件可與上述的不等式(8)的一般形式相對(duì)應(yīng)。
因而,本發(fā)明可有利地適用于圖1A中表示的具有矢量量化的信源編碼/譯碼。
然而,所述編碼/譯碼的類型也可以為圖1B中表示的信道調(diào)制編碼/譯碼,假定其包括: -在傳輸之前,根據(jù)置換的秩確定碼矢量(圖1A和圖1B中相同的OP3);以及 -在接收時(shí),通過對(duì)應(yīng)于接收的矢量的碼矢量計(jì)算置換的秩(圖1A和圖1B中相同的OP2)。
部分秩的計(jì)算(在乘積或商中)包括這樣的項(xiàng),如將在下文中看到的一般規(guī)則,所述項(xiàng)保持小于或等于所述置換碼具有最大維數(shù)n。因此,在有利的實(shí)施中,具有預(yù)先記錄的分解的所述所選整數(shù)至少包括: -1和所述最大維數(shù)n之間的整數(shù); -整數(shù)0的階乘值; -以及,優(yōu)選地,1和所述最大維數(shù)n之間的整數(shù)的階乘值。
在具體可選的實(shí)施中,所述所選整數(shù)也包括數(shù)值0。
因此,如果所述置換碼利用Schalkwijk列舉,則與碼矢量(y0,...yn-1)的截?cái)?yk,...yn-1)相關(guān)的部分秩

表示為: 其中 -符號(hào)

表示從0到m的整數(shù)指數(shù)i的乘積, -符號(hào)

表示從0到m的整數(shù)指數(shù)i的和; -符號(hào)l!為整數(shù)l的階乘值,對(duì)于l>0,l?。?×2×3×...×(l-1)×l,并且0?。?, -整數(shù)n為所述置換碼的維數(shù),其對(duì)應(yīng)于碼矢量包括的分量的總數(shù); -0和n-1之間的整數(shù)k為所述碼矢量的第k個(gè)分量yk的指數(shù),從信源編碼/譯碼(或信道調(diào)制編碼/譯碼)中的秩值推導(dǎo)或者對(duì)于其的置換待在信源編碼/譯碼(或信道調(diào)制編碼/譯碼)中索引; -整數(shù)q為所述碼矢量包括的分離分量的數(shù)量;以及 -項(xiàng)

(稱為中間權(quán))表示k和n-1之間的、其值等于同一索引分量d的索引分量的數(shù)量。
在這種情況下,在乘積和/或商中,具有預(yù)先記錄的分解的、然后待在所述部分秩

的表達(dá)式中識(shí)別的所述所選整數(shù)為: -階乘項(xiàng)(n-1-k)!,對(duì)于0和n-1之間的所有整數(shù)k; -包含在乘積中的每一項(xiàng)

的值和/或其階乘值,每一項(xiàng)

均在0和n之間;以及 -對(duì)于0和n-1之間的所有整數(shù)k的項(xiàng)每一項(xiàng)均在1和n-1之間。
還是在Schalkwijk列舉的情況下,中間分解的暫時(shí)存儲(chǔ)有利地應(yīng)用為:將用于前一索引k的所述項(xiàng)的分解中的指數(shù)的和暫時(shí)存儲(chǔ)在存儲(chǔ)器中,以加到用于當(dāng)前指索引k的

的分解的指數(shù)中或者從中減去。
通過閱讀下文的詳細(xì)描述和除了上述圖1A、圖1B、圖2和圖3以外的其它附圖,本發(fā)明的其它特性和優(yōu)點(diǎn)將會(huì)變得顯而易見的,其中: -圖4圖解說明了通過利用本發(fā)明的置換的秩的編碼/譯碼原理; -圖5圖解說明了根據(jù)第一實(shí)施方式用于通過利用本發(fā)明對(duì)置換的秩進(jìn)行編碼的處理運(yùn)算,其中,提出了用于計(jì)算中的項(xiàng)的素?cái)?shù)冪分解的指數(shù)的展開(exploded)表示法; -圖6圖解說明了根據(jù)第二實(shí)施方式用于利用本發(fā)明對(duì)置換的秩進(jìn)行編碼的處理運(yùn)算,其中,提出了分解的指數(shù)的緊湊(compact)表示法; -圖7圖解說明了根據(jù)第一實(shí)施方式用于利用本發(fā)明對(duì)置換的秩進(jìn)行譯碼的處理運(yùn)算,其中,提出了分解的指數(shù)的展開表示法;以及 -圖8圖解說明了根據(jù)第二實(shí)施方式用于利用本發(fā)明對(duì)置換的秩進(jìn)行譯碼的處理運(yùn)算,其中,提出了分解的指數(shù)的緊湊表示法; -圖9用圖解法表示了實(shí)現(xiàn)本發(fā)明的編碼/譯碼裝置。
作為提醒,尤其是參考4到圖8,應(yīng)該強(qiáng)調(diào)的是: -術(shù)語“編碼”指計(jì)算置換的秩t(圖1A和圖1B中的運(yùn)算OP2);以及 -術(shù)語“譯碼”指根據(jù)秩t確定置換(圖1A和圖1B中的運(yùn)算OP3)。
因此,這些運(yùn)算將參照通過矢量量化進(jìn)行的信源編碼/譯碼而指定。但是,應(yīng)該記住的是,這些運(yùn)算也可在信道編碼/譯碼中、在調(diào)制中進(jìn)行。
為了馬上說明本發(fā)明的原理,素?cái)?shù)冪因式分解描述如下。
對(duì)非零正整數(shù)K進(jìn)行素?cái)?shù)冪分解的表示如下: pi是第i個(gè)素?cái)?shù)(p0=1,p1=2,p2=3,p3=5,p4=7,p5=11,p6=13,p7=17,等)。
在整數(shù)K的分解中,pi的指數(shù)記為

且mK表示K的分解中具有非零指數(shù)的最大素因數(shù)的索引。
例如,數(shù)K=120(或5!)表示為: 120=1*23*31*51,其中mk=3,這是因?yàn)樽畲笠驍?shù)“5”的索引是3(p3=5)。因此,和 實(shí)踐中,由于數(shù)“1”是乘法的中性元,因此可將p0從分解式中去除,即: 當(dāng)然,K=0不能分解為素?cái)?shù)冪。
小于或等于16的正整數(shù)的素?cái)?shù)冪乘積的分解由表3a給出,其階乘的分解由表3b給出。該分解包括六個(gè)素?cái)?shù)(2,3,5,7,11和13)。由于表3a和表3b中的列由素?cái)?shù)pi做索引且行由n做索引,因而,在數(shù)n和n!的素?cái)?shù)冪乘積分解中,位于列pi和行n交叉處的單元格分別是素?cái)?shù)pi的指數(shù)


對(duì)于任何正整數(shù)n>1,n!的素因數(shù)的數(shù)mn!使得數(shù)mn!和mn分別顯示在表3b的最后一列和表3a的倒數(shù)第二列。應(yīng)該注意,mn≤mn!。
如表3a所示,數(shù)n的分解的許多指數(shù)為零。在表3a的最后一列中,指出了n的分解中的非零指數(shù)的數(shù)m′n。n=0的分解的不存在(因此指數(shù)也不存在)通過“-”符號(hào)在表3a的行n=0中示出。


表3a:正整數(shù)n(n<17)的素?cái)?shù)冪分解

表3b:n!(n<17)的素?cái)?shù)冪分解 接下來介紹接下來這種分解在計(jì)算置換碼的部分秩中的應(yīng)用,首先介紹使用Schalkwijk公式的情況,然后介紹一般情況。
應(yīng)該記得,記為

的部分秩由上文的關(guān)系式(7)給出: 從而使得能對(duì)以下三項(xiàng)進(jìn)行素?cái)?shù)冪分解: (n-1-k)!,和 根據(jù)(n-1-k)!、Pk和Sk的分解的指數(shù),通過簡(jiǎn)單的加法和減法就可計(jì)算得到

的分解的指數(shù)。
實(shí)際上,

分解中的素因數(shù)pi的指數(shù)

由(n-1-k)!、Sk和Pk三項(xiàng)的分解中pi的三個(gè)指數(shù)計(jì)算得到。指數(shù)

等于前兩項(xiàng)(

的分子)的pi指數(shù)和減去最后一項(xiàng)(

的分母)的pi的指數(shù)。該觀測(cè)形式化后表示為: 圖4描述了可包括在本發(fā)明意義下、用于編碼和譯碼的處理運(yùn)算中的一般步驟(以“G-n”來表示第n個(gè)一般步驟)。
因而,參考圖4,從當(dāng)前索引k(步驟G-1)開始且通過將會(huì)在隨后詳細(xì)描述的一些中間步驟,首先應(yīng)該記住,規(guī)定了查閱預(yù)先記錄的表(在圖4中示例性示出的步驟G-2中記為Dl和Dl!),以根據(jù)上文的關(guān)系式(10)來計(jì)算全局指數(shù)

(步驟G-3),該指數(shù)在素因數(shù)冪形式的、中間秩

的分解中是具體的。然后,可能通過在素因數(shù)的索引i上進(jìn)行循環(huán),而由此推導(dǎo)出中間秩

的值(步驟G-4)。在該中間秩的計(jì)算之后則可更新該置換的總秩(步驟G-5): -對(duì)于秩編碼,使用類型的關(guān)系式,其中,索引k遞減(步驟G-6); -或者,對(duì)于秩譯碼,使用類型的關(guān)系式,其中,索引k遞增(步驟G-7),如隨后所見。
最后,在編碼的步驟G-7中(或如圖4的虛線所示在譯碼中)獲得置換的秩t,在步驟G-8中,根據(jù)上述的不等式(8)、并通過上文中的關(guān)系式y(tǒng)k=ad根據(jù)矢量Y的分量將矢量D的分量dk推導(dǎo)出。
在一般情況下,并與Schalkwijk列舉無關(guān)地,如果置換的部分秩t′(t′>0)以Nt′項(xiàng)vj(1≤j≤Nt′)為分子、并以Nt′項(xiàng)ρj(1≤j≤Dt′)為分母的形式表示為: 那么,部分秩t′的分解的指數(shù)

由中間分解確定,其中,該中間分解是Nt′個(gè)vj的分解和Dt′個(gè)ρj的分解,指數(shù)

表示為: 素?cái)?shù)因數(shù)分解還將在下文中用于部分秩t′的、整數(shù)商的乘積的公式。
也作為一般規(guī)則,如果則 為了回到Schalkwijk列舉的特殊情況、并然后根據(jù)部分秩

的分解對(duì)其進(jìn)行計(jì)算,一旦該分解被確定之后,則如下執(zhí)行。
遵循關(guān)系式的精神,通過乘以對(duì)應(yīng)的冪簡(jiǎn)單地計(jì)算部分秩
在此應(yīng)該指出,項(xiàng)(n-1-k)!和Pk是嚴(yán)格正整數(shù),但是項(xiàng)Sk可為零并因而是不可分解的。在該情況下,部分秩

為零。如上文所述(圖3中的步驟CA-11),然后項(xiàng)Sk的值進(jìn)行測(cè)試(Sk=0?),以僅當(dāng)Sk≠0時(shí),才計(jì)算部分秩
更一般地,如果則 以及如果則(t′>0) 將要記住的是,組成部分秩的項(xiàng)的素因數(shù)因式分解使得能夠通過用素因數(shù)冪的乘法代替除法來消除除法,特別地,通過用與這些素?cái)?shù)相關(guān)的指數(shù)的簡(jiǎn)單加法和減法代替除法來消除除法。
因而,在本發(fā)明意義下,由有限數(shù)量的整數(shù)的基因數(shù)分解,其中該因數(shù)分解被存儲(chǔ)在存儲(chǔ)器中(下文稱為“基本分解”),提出了如下步驟: -在圖4的步驟G-2的意義下,確定在置換的秩中出現(xiàn)的項(xiàng)(例如(n-1-k)!,和)的素因數(shù)分解(下文稱為“中間分解”); -在圖4的步驟G-3的意義下,根據(jù)這些中間分解,確定置換的部分秩

的素因數(shù)分解,值得注意的是,這種分解是通過計(jì)算包含在該部分秩的分解中的指數(shù)(例如,類型關(guān)系式)而實(shí)現(xiàn)的;以及 -在圖4的步驟G-4的意義下,根據(jù)部分秩

的分解(例如,使用類型關(guān)系式),對(duì)其進(jìn)行計(jì)算。
當(dāng)然,待存儲(chǔ)的基本分解優(yōu)選地是有利選擇的目標(biāo)。在優(yōu)選的但非限制性的實(shí)現(xiàn)中,將根據(jù)相關(guān)置換碼的最大維數(shù)(該最大維數(shù)記為n)選擇將被存儲(chǔ)的基本分解。因而,基本分解優(yōu)選地為: -整數(shù)l的階乘(記為l!)的分解,其中,該整數(shù)l滿足0≤l≤n; -以及整數(shù)l自身的分解,其中,此時(shí),1≤l≤n; 其中,將要記住,n是相關(guān)置換碼的最大維數(shù) 然后,可通過數(shù)m識(shí)別基本分解,給定: -將考慮的素因數(shù)的數(shù)量m -m個(gè)素因數(shù)自身 -以及它們各自的指數(shù) 稍后將在在分解的所謂“展開(exploded)”表示的上下文中,參考表4a和表4b對(duì)其實(shí)現(xiàn)的實(shí)施例進(jìn)行描述。應(yīng)該指出的是隨后描述的所謂“緊湊”表示由存儲(chǔ)單字組成,其中,該單字的各位給出了分解所包含的所有指數(shù)。
然后,可定義基本分解的不同集,以及用于表示和存儲(chǔ)這些基本分解的程序。
而且,選擇用于確定中間分解的項(xiàng)和確定適當(dāng)?shù)卮_定這些中間分解的適當(dāng)確定是下文將描述的有利實(shí)現(xiàn)的目標(biāo)。部分秩的分解以及根據(jù)其分解計(jì)算部分秩也是下文將描述的有利實(shí)現(xiàn)的目標(biāo)。
接著描述將被存儲(chǔ)的基本分解的選擇。
一般地,且獨(dú)立于用于列舉n維置換碼的技術(shù),置換的秩的計(jì)算使用整數(shù)l(0≤l≤n),且首先使用其階乘l!(0≤l≤n)。在優(yōu)選的實(shí)現(xiàn)中,基本分解是l!(0≤l≤n)階乘分解和l(1≤l≤n)分解,其中,如上文所述,n是相關(guān)置換碼的最大維數(shù)。因此,在該優(yōu)選的實(shí)現(xiàn)中提出了(2n+1)個(gè)基本分解。
然而,其它實(shí)現(xiàn)也是可能的。
例如,僅需提供(n+1)次基本分解,即,0!和l(1≤l≤n)的基本分解。因而,如果l!(l>0)的分解對(duì)部分秩的計(jì)算是必要的,則其可在用于確定中間分解的步驟中,根據(jù)j(1≤j≤l)的l次基本分解和計(jì)算得到。
相反地,只需要提供l!(0≤l≤n)的(n+1)次分解。如果l(l>0)的分解對(duì)部分秩的計(jì)算是必要的,則其可在用于確定中間分解的步驟中,根據(jù)l!和(l-1)!兩個(gè)基本分解以及如下關(guān)系式中計(jì)算得到: 因此,將會(huì)理解,基本分解集的選擇能有利地導(dǎo)致在最小化存儲(chǔ)這些基本分解的表示所需存儲(chǔ)器和最小化用于確定中間分解的步驟的復(fù)雜性之間得到平衡。
下面描述根據(jù)本發(fā)明的分解的表示。
如上所述,分解(無論是部分秩、中間分解或基本分解)由待考慮的素因數(shù)的數(shù)量m、該m個(gè)素因數(shù)及其各自的指數(shù)限定。下文提出了用于表示分解、并存儲(chǔ)用于基本分解的數(shù)據(jù)不同的方案。
指數(shù)的展開表示 階乘l!(0≤l≤n)的表示 包含在值l!的分解中的素因數(shù)的數(shù)量ml!隨著數(shù)l的增大而增大。用于表示l!(0≤l≤n)的分解的第一方案在于,對(duì)于每個(gè)l值,存儲(chǔ)數(shù)ml!以及pi的冪(1≤i≤ml!)的ml!個(gè)指數(shù)。將注意到l!的ml!個(gè)指數(shù)是非零的。
在更有利的變體中,基本分解集共享相同數(shù)量的mn!個(gè)素因數(shù),且對(duì)于每一基本分解,均存儲(chǔ)mn!個(gè)指數(shù),l!的基本分解的索引大于ml!的指數(shù)為零。該方案可以通過提供對(duì)指數(shù)表的規(guī)則定址來利用該表。然而,這一實(shí)施需要相當(dāng)大的存儲(chǔ)容量。該表包括mn!×(n+1)個(gè)值,并且指數(shù)

存儲(chǔ)于該表的地址(mn!,l+(i-1))處,其中符號(hào)(x,y)表示該表中的x行、y列上的單元。當(dāng)然,將會(huì)理解,也可以考慮其它的慣例。因而,不考慮具有m列N行并因此具有m×N個(gè)單元(或元素)的二維表,而可考慮具有m×N個(gè)單元的一維表,其中,位于二維表的地址(x,y)處的單元位于該一維表的地址m×x+y處。然后,將存儲(chǔ)在二維表的地址(l,(i-1))處的指數(shù)

存儲(chǔ)在一維表的地址(mn!×l+(i-1))處。例如,可將數(shù)0至8的階乘分解的指數(shù)存儲(chǔ)在包括36個(gè)單元的二維表中,該表由表3b的4列(列pi=2,3,5,7)和9行(行n=0,..8)組成。這些相同的指數(shù)可以存儲(chǔ)在下文給出的具有36個(gè)單元的一維表Dl!中(附錄A-11)。第一表的地址(x,y)處的單元與Dl!中的地址:4×x+y處的單元相等。
此外,可以規(guī)定存儲(chǔ)ml!的(n+1)個(gè)值,以能夠利用l!的基本分解來減少中間分解的計(jì)算。
*整數(shù)l(1≤l≤n)的表示 為了表示基本分解l(1≤l≤n),還可以提出幾種方案。第一方案是對(duì)于每個(gè)值1,均存儲(chǔ)數(shù)ml和l的pi的冪(1≤i≤ml)的ml個(gè)指數(shù)。在一種變體中,可以優(yōu)選地存儲(chǔ)和用于l!的指數(shù)(ml!或mn!個(gè))同樣多的指數(shù)。l和l!的基本分解因而共享相同的數(shù)m。
在另一變體中,可以利用這樣的事實(shí),即,l的分解的非零指數(shù)的數(shù)量m′l較小。例如,在表3a中很明顯的是,數(shù)m′l最大為2(對(duì)于l≤16)。因此,可以只存儲(chǔ)該數(shù)以及對(duì)應(yīng)的值pi或索引i。然而,還有必要規(guī)定存儲(chǔ)非零次冪的這些素因數(shù)的索引i,這是因?yàn)樗鼈儾辉儆杀碇械南鄳?yīng)指數(shù)的地址隱含地識(shí)別。
*除了基本分解之外的分解的表示 中間分解的表示取決于基本分解的表示,中間分解的表示根據(jù)基本分解的表示而確定。類似地,部分秩的分解的表示取決于中間分解的表示,部分秩的分解的表示根據(jù)中間分解的表示而確定。
*基本分解的存儲(chǔ) 典型地,可通過下文用于8維(n=8)的置換碼的表4a至4d作為示例來說明四個(gè)可能的存儲(chǔ)方案,其中考慮了四個(gè)(m8?。?)素?cái)?shù)(2,3,5和7)。這些實(shí)施例可應(yīng)用于3GPP AMR-WB+編碼器(標(biāo)準(zhǔn)[3GPPTS26.273]和[3GPPTS26.304]))。該編碼器使用代數(shù)矢量量化,其字典為8維Gosset陣列RE8的置換碼的并集。
前三個(gè)方案(表4a-4c)以相同的方式表示并存儲(chǔ)l!的基本分解。實(shí)際上,提供了對(duì)ml!和l!的pi的冪(1≤i≤ml!)的ml!個(gè)指數(shù)的存儲(chǔ)。它們的區(qū)別在于l的基本分解的表示和存儲(chǔ)。表4a示出了用于存儲(chǔ)ml和l!的pi(1≤i≤ml!)的冪的ml!個(gè)指數(shù)的第一方案。表4b示出了用于存儲(chǔ)l的pi(1≤i≤ml!)的冪的ml!個(gè)指數(shù)的第二方案。


表4a:用于存儲(chǔ)l和l!的素?cái)?shù)冪分解并用于8維(l從0至8)置換碼的第一方案
表4b:用于存儲(chǔ)l和l!的素?cái)?shù)冪分解并用于8維(l從0至8)置換碼的第二方案 下面的表4c示出了用于存儲(chǔ)l!的pi的冪的非零指數(shù)的數(shù)量m′l、并用于存儲(chǔ)其指數(shù)的相應(yīng)索引i的第三方案。在所表示的表中,為了更為清楚,所示出的是素因數(shù)pi。


表4c:用于存儲(chǔ)l和l!的素?cái)?shù)冪分解并用于8維(l從0至8)置換碼的第三方案 在第四方案中(由下面的表4d示出),基本分解的集由數(shù)mn!表示,并且對(duì)于每一基本分解(l或l!),存儲(chǔ)了mn!個(gè)指數(shù)。表4d是從上文給出的表3a和3b中四列(pi=2,3,5和7)和9行(n=0至8)中提取的。

表4d:用于存儲(chǔ)l和l!的素?cái)?shù)冪分解并用于8維(l從0至8)置換碼的第四方案 在使用具有可變維數(shù)和分辨率的統(tǒng)計(jì)矢量量化的TDAC編碼器中(最大維數(shù)為15),考慮了6個(gè)(m15?。?)素?cái)?shù):2,3,5,7,11和13。表3a和3b中的6列(pi=2,3,5,7,11和13)和16行(n=0 to 15)因而可表示第四方案的基本表示集的存儲(chǔ)。
指數(shù)的緊湊表示 下面描述另一個(gè)有利的方案,其使存儲(chǔ)最小化,并將基本分解的指數(shù)緊湊地表示在有限數(shù)量的字上。在該基本分解的表示的變體中,中間分解和部分秩的分解也被緊湊地表示。有利地,如下文將會(huì)看到的那樣,該方法還使得確定這些分解的復(fù)雜性最小。
*分解的緊湊表示 對(duì)于每一素因數(shù)pi,都進(jìn)行搜索以確定部分秩的分子中的、其指數(shù)的最大值的上限βi。該上限給定pi的指數(shù)的最大可能值,即βi+1。通過用

表示各位整數(shù)以用二進(jìn)制形式表示值βi+1,我們得到:

以及(其中) 其中

表示剛好大于或等于x的整數(shù)
包含在部分秩t′中的項(xiàng)K的冪因子分解的指數(shù)可以由Bn位()的字eK緊湊地表示,該字eK為: 符號(hào)"<<B"表示左移B位。
應(yīng)注意的是,如果數(shù)n較大,則Bn可大于用來表示整數(shù)的位數(shù)B0(16、32或40比特)。在這種情況下,包含在t′中的整數(shù)K的素因數(shù)分解的指數(shù)被表示為M個(gè)整字eK(m)的形式,0≤m<M(當(dāng)然,M>1)。
有利地,這M個(gè)字可如下形成: ·eK(0)包括前i0個(gè)指數(shù)(從p1至

的指數(shù)): 其中 ●eK(1)包括從



的指數(shù): 其中 ●后一個(gè)關(guān)系式可推廣與任何m,直到組成包括指數(shù)

的最后的字。
當(dāng)然,還可以提供其它的變體。例如,一個(gè)變體在于,分離地存儲(chǔ)p1的指數(shù),并根據(jù)從p2的指數(shù)應(yīng)用上述處理運(yùn)算。
*上限的確定 極限βi可以以多種方式確定。利用置換碼的信息(字母表的大小q,權(quán)wi,其中0≤i<q),可以明確地確定部分秩的分子的每一指數(shù)的最大值。如果使用多個(gè)置換碼(可能具有不同的維數(shù)),則優(yōu)選地對(duì)每一指數(shù)選擇這些最大值中的最大數(shù)。
本發(fā)明有利地提出了一般處理運(yùn)算,以在Schalkwijk列舉的上下文中確定該上限。除了最大維數(shù)之外,該處理運(yùn)算不使用置換碼的其它先驗(yàn)信息。其簡(jiǎn)單地利用了以下關(guān)系: 然后選擇 當(dāng)使用多種的置換碼時(shí),這種非常通用的處理尤其適合。
表5a給出了用于維數(shù)為8和15的

的分子中的指數(shù)的最大值的上限。表5b給出了用于維數(shù)為8和15的這些指數(shù)的位數(shù)

及其和Bn(最后一列)。在8維中,素因數(shù)2的指數(shù)在3位上表示,其它素因數(shù)(3、5和7)的指數(shù)在2位上表示。在15維中,素因數(shù)2的指數(shù)在4位上表示,其它素因數(shù)(5、7、11和、13)的指數(shù)在2位上表示。

表5a:對(duì)于維數(shù)為8和15的置換碼的分子的指數(shù)的上限
表5b:表示對(duì)于維數(shù)為8和15的置換碼的指數(shù)的位數(shù) 表6a和6b分別給出了維數(shù)n等于8和15的l和l!的指數(shù)的緊湊表示。
表6a:對(duì)于8維的置換碼的指數(shù)的緊湊表示 表6b:對(duì)于15維的置換碼的指數(shù)的緊湊表示 作為純粹的說明性的示例,讓我們?cè)O(shè)法利用表6b來確定整數(shù)l=12的分解。
優(yōu)選地,在表6b中,因?yàn)榇a的最大維數(shù)為n=15,因此“2”的指數(shù)在4位上表示,“3”的指數(shù)在3位上表示,而其它的素因數(shù)5、7、11和13在2位上表示。在該表中,在列l(wèi)=12中,可以讀出其緊湊指數(shù)e12=18。
根據(jù)下表的讀數(shù),18(=16+2)在B15=15位上的二進(jìn)制表示為: 000 0000 0001 0010,通過將與同一個(gè)素?cái)?shù)相關(guān)聯(lián)的位分組在一起,其也表示為:00 00 00 00 001 0010。
4個(gè)最低位(權(quán)i=0至3)為素因數(shù)2的指數(shù),即,0010=2,這意味著待分配給素?cái)?shù)2的指數(shù)為2。
接下來的3位(權(quán)i=4至6)為素因數(shù)3的指數(shù),即,001=1,這意味著待分配給素?cái)?shù)3的指數(shù)為1。
接下來的2位(權(quán)i=7至8)為素因數(shù)5的指數(shù),即,00=0。
接下來的2位(權(quán)i=9至10)為素因數(shù)7的指數(shù),即,00=0。
接下來的2位(權(quán)i=10至12)為素因數(shù)11的指數(shù),即,00=0。
接下來的2位(權(quán)i=13至14)為素因數(shù)13的指數(shù),即,00=0。
該提取過程需要對(duì)將高位屏蔽以恢復(fù)包含在低位中的素因數(shù)的指數(shù),然后將恢復(fù)的位數(shù)的緊湊指數(shù)移位,以轉(zhuǎn)至下一個(gè)素因數(shù)的指數(shù)。
因此,在15維中,具有6個(gè)待選取的指數(shù),開始于指數(shù)2。
指數(shù)2二進(jìn)制表示對(duì)應(yīng)于18的4個(gè)最低位,即0 0 1 0,其對(duì)應(yīng)于2。為了恢復(fù)它們,用15將18的高位屏蔽(記為18&15),15相當(dāng)于: 24-1=1111。
得到的結(jié)果是e12=18&(2<<4-1)=2,這意味著待分配至素?cái)?shù)2的指數(shù)為2。
然后將18右移4位,得到:000 0000 0001=1 3的指數(shù)的二進(jìn)制表示對(duì)應(yīng)于1的3個(gè)最低位,即0 0 1(=1)。為了恢復(fù)它們,用7將1的高位屏蔽(表示為17&7,且值為23-1=111)。
得到的結(jié)果是e112=1&(2<<3-1)=1,這意味著待分配至素?cái)?shù)3的指數(shù)為1。
然后將1右移2位,因而給出:000 0000=0,用于所有的其它高位。
因此,如上所述,l=12的冪為: -對(duì)于素?cái)?shù)2,為2,而 -對(duì)于素?cái)?shù)3,為1, 即l=12=22×31 *分母的上限 此處假定對(duì)于每一素因數(shù),其在部分秩t′的分母中的指數(shù)小于或等于其在t′的分子中的指數(shù)。當(dāng)t′是絕對(duì)負(fù)值時(shí)就是上述情況,這是因?yàn)橐虼? 實(shí)際上,通過Schalkwijk公式,如果q>1,則值

為分母Pk的指數(shù)的最大值β′i的上限(如果q>1,Pk≤(n-1)!)。
因此,檢查不等式就已足夠,這已經(jīng)由上述的確定βi的值的處理運(yùn)算完成了。
在其它情況下,可明確地搜索β′i,并利用βi和β′i的最大值來計(jì)算
在q=1的情況下,將會(huì)理解,公知秩(t=0)的單個(gè)碼字包括在置換碼中,因此,利用先驗(yàn)執(zhí)行秩計(jì)算和相應(yīng)的反運(yùn)算是無用的。然而,如果不期望分別處理該特例,那么仍可以規(guī)定通過βi和

的最大值來計(jì)算

下表7示出了對(duì)于n=16的情況。

表7:對(duì)于16維的置換碼計(jì)算分子βi和

的上限 接下來簡(jiǎn)單描述存儲(chǔ)基本分解所需的存儲(chǔ)容量。
獨(dú)立于所選的用于表示基本分解的方案,將基本分解存儲(chǔ)在表中,并可在秩編碼和譯碼運(yùn)算中對(duì)該表進(jìn)行尋址。雖然0的分解是不可能的(并且不使用),但可優(yōu)選地為0的分解存儲(chǔ)“啞”指數(shù)(例如0s或1s),以簡(jiǎn)化該尋址計(jì)算。下表8總結(jié)了在這兩種情況下(存儲(chǔ)和不存儲(chǔ)0的啞分解),用于五種方案的、存儲(chǔ)與基本分解相關(guān)的數(shù)據(jù)所需的存儲(chǔ)容量。

表8:存儲(chǔ)基本分解所需的存儲(chǔ)器 在第五方案中,考慮了位數(shù)

的存儲(chǔ)(+mn!)。然而,實(shí)際上,如將在下面的實(shí)施方式中看到的那樣,比從存儲(chǔ)器中進(jìn)行讀取更優(yōu)選的是,將其“硬連線”(將其值設(shè)定在計(jì)算程序中而不聲明為變量)。因此,實(shí)際上,對(duì)其進(jìn)行存儲(chǔ)并沒有意義。
表9給出了對(duì)于nmax=8和15,存儲(chǔ)與五個(gè)方案的分解的指數(shù)相關(guān)的數(shù)據(jù)所需的存儲(chǔ)器(對(duì)0進(jìn)行啞存儲(chǔ))。

表9:對(duì)于8維和15維的置換碼,存儲(chǔ)基本分解所需的存儲(chǔ)器 下面描述素因數(shù)冪的存儲(chǔ)。
在基本分解之外,本發(fā)明使用素因數(shù)冪來根據(jù)部分秩的分解計(jì)算部分秩??筛鶕?jù)這些素因數(shù)的表來實(shí)時(shí)(“在線”)計(jì)算其冪。優(yōu)選地,預(yù)計(jì)算并除2之外的素?cái)?shù)的冪并將其存儲(chǔ),而僅對(duì)2的冪進(jìn)行實(shí)時(shí)計(jì)算。下表10a給出了8維置換碼所需的3、5和7的冪(如同在AMR-WB+編碼器中使用的冪)。表10b給出了最大15維的置換碼所需的3、5、7、11和13的冪(如同在TDAC編碼器中使用的冪)。

表10a:用于8維的置換碼的素因數(shù)冪

表10b:用于15維的置換碼的素因數(shù)冪。此處的變量Npfp表示待存儲(chǔ)的素因數(shù)冪的數(shù)量。
還是此處,對(duì)于每一素因數(shù),可以只存儲(chǔ)必要數(shù)量的冪。作為變體,如果優(yōu)選地只具有可規(guī)律地尋址的冪的單個(gè)表,則可以規(guī)定對(duì)于每一素因數(shù)存儲(chǔ)與所需的p2(p2=3)的冪的數(shù)量同樣多的值。對(duì)于未使用的冪,當(dāng)然可以利用例如1s或0s的啞值的存儲(chǔ)。
下面描述用于利用本發(fā)明進(jìn)行編碼的、置換的秩的計(jì)算。
具有幾種取決于所選的基本分解及其表示的集的變體。為了簡(jiǎn)便,下文中對(duì)可能的實(shí)施的說明僅限于用于基本分解集的優(yōu)選實(shí)施方式的情況,其中,對(duì)階乘l!和l進(jìn)行分解。
下面首先說明對(duì)于每一基本分解具有mn!個(gè)指數(shù)的、指數(shù)的展開表示的方案,這是最一般的情況。然后描述指數(shù)的展開表示的變體。最后,描述基本分解的指數(shù)的緊湊表示的方案及其一些變體。將會(huì)明顯看到,本發(fā)明極好地適用于對(duì)置換的秩進(jìn)行編碼的處理運(yùn)算。
下面回顧Schalkwijk算法,作為列舉處理的示例。
分解的指數(shù)的展開表示 令n為使用的置換碼的最大維數(shù),且mn!為包括在數(shù)n!中的素因數(shù)的數(shù)量。
下面描述利用分解的指數(shù)的展開表示進(jìn)行編碼的第一實(shí)施方式 根據(jù)第一實(shí)施方式的編碼 此處,l和l!的基本分解的指數(shù)優(yōu)選地根據(jù)上文的表4d中的“第四”方案存儲(chǔ),其中用于l=0的啞存儲(chǔ)位于兩個(gè)單維表中,該兩個(gè)表分別表示為Dl和Dl!且具有mn!×(n+1)個(gè)單元。如上所述,也可以考慮具有mn!列和(n+1)行的二維表。規(guī)則存儲(chǔ)的l(或l!)的指數(shù)(均存儲(chǔ)在mn!個(gè)值上)、讀取基本分解的指數(shù)的運(yùn)算需要表Dl(或Dl!)中的地址計(jì)算。為了讀取l!(或l)的分解的指數(shù),有必要指向表Dl!(或Dl)的地址(l×mn!)處,并因而標(biāo)定指數(shù)

(或

)的地址,指數(shù)

(或

)位于下一地址(l×mn!+1)處,更普遍地,指數(shù)

(或

)位于地址(l×mn!+i-1)處。如上所述,在二維表中,指數(shù)

(或

)位于地址((l;(i-1))處(列為(i-1)且行為l)。
應(yīng)注意到的是,如果未規(guī)定對(duì)l=0啞存儲(chǔ),那么l(l>0)的n個(gè)基本分解的表Dl中的地址計(jì)算為:(l-1)×mn!。
初始化 ●將Pk的中間分解的mn!個(gè)指數(shù)初始化為零(其存儲(chǔ)在具有mn!個(gè)單元且優(yōu)選地在每一位置上進(jìn)行更新的表P中,如將會(huì)參照下文中的步驟C-3看到的那樣)。因而,指令如下: ○ P[i]=0,1≤i≤mn! ·將秩t和q個(gè)權(quán)

也初始化為零(其存儲(chǔ)在具有q個(gè)單元且將在每一位置上更新(下文中的步驟C-2)的表P中)。指令如下: ○ t=0 ○ w[i]=0,0≤i<q ○ k=n-1 索引k的迭代 參見圖5,進(jìn)行n個(gè)位置上的迭代(通過變量k上的循環(huán))。圖5中的步驟C-n的符號(hào)中的字母“C”表示詞“編碼”。
在步驟C-1中,讀取變量dk。在步驟C-2對(duì)表w的單元dk進(jìn)行更新:w[dk]=w[dk]+1。
步驟C-3是對(duì)Pk(表P)的分解的指數(shù)的更新,其具體地通過: -從地址mn!×w[dk]讀取表Dl中的基本分解w[dk]的mn!個(gè)指數(shù)

(步驟C-31),且 -更新:對(duì)于1≤i≤mn!,(步驟C-32)。
因此,為了實(shí)施步驟C-31,表Dl中的基本分解w[dk]的第一指數(shù)(表示為

)位于地址mn!×w[dk]處,第二指數(shù)(表示為

)位于地址mn!×w[dk]+1處,等等。更普遍地,指數(shù)

將位于地址mn!×w[dk]+i-1處。
并行地,在步驟C-4中,根據(jù)普遍關(guān)系計(jì)算Sk。
步驟C-5是對(duì)Sk的值的測(cè)試。如果Sk為零(Y箭頭),則意味著部分秩

為零(上文中的式(7))且秩t未改變,那么,處理繼續(xù)進(jìn)行隨后的步驟C-11。否則(N箭頭,Sk≠0),該處理繼續(xù)進(jìn)行步驟C-6,其中在表Dl的地址mn!×Sk處的讀取基本分解的mn!個(gè)指數(shù)
并行地,步驟C-7在于,在表Dl!的地址mn!×(n-1-k)處讀取基本分解(n-1-k)!的mn!個(gè)指數(shù)

將注意的是,如果和Sk不為零(測(cè)試C-5的輸出否),則執(zhí)行步驟C-7,以避免在(任何情況下)部分秩

為零時(shí)對(duì)表Dl!進(jìn)行不必要的讀取。
在步驟C-8中,可以將表的不同讀數(shù)的結(jié)果集合在一起,以根據(jù)以下關(guān)系式首先計(jì)算部分秩

的分解的mn!個(gè)指數(shù): 對(duì)于1≤i≤mn! 最后,在步驟C-9中,通過下式計(jì)算部分秩

本身: 如上所述,項(xiàng)w[dk]是必須小于或等于相關(guān)置換碼的最大維數(shù)n的權(quán)。類似地,該權(quán)的和Sk仍小于最大維數(shù)n,并當(dāng)然對(duì)于(n-1-k)同樣適用。w[dk]、Sk和(n-1-k)!的分解實(shí)際上已在范圍高達(dá)最大維數(shù)n的整數(shù)或整數(shù)階乘的分解的表中列出,如表4d。根據(jù)表中列出的分解w[dk]以及在前述循環(huán)(k-1)上確定且保存在存儲(chǔ)器中的Pk-1的分解,Pk的分解被確定。
作為圖5的部分秩計(jì)算步驟的純粹說明性的示例,考慮維數(shù)n=8且q=4的置換碼。在該示例中,指數(shù)被存儲(chǔ)在具有4列和9行并因而包括36個(gè)單元的二維表中。因此,其可以從上文中給出的表4d中提取,其中列pi=2,3,5,7且行l(wèi)=0,...,8。
在該示例中,假定在前述的位置k=3處,權(quán)w的表為{1,1,0,3}且因而P3=1!1 0!3?。?。因此,P3(=21×31 x 50×70)的分解的指數(shù)的表P為{1,1,0,0}。
在位置k=2上,對(duì)于步驟C-1,假定d2=2已經(jīng)被讀取。
在該示例中,在步驟C-2中,通過將單元w[2]加1(w[2]=0+1=1)而將其更新。
在步驟C-31中,讀取1(=w[2])的分解的四個(gè)指數(shù),即,0,0,0,0(參見表4d,第6至第9列和l=1的第3行)。
然后(步驟C-32),表P被更新,因此得到P={1,1,0,0}。
在步驟C-4中,計(jì)算Sk:Sk=w
+w[1]=1+1=2。因此,Sk不為零(測(cè)試C-5)。
○讀取Sk的分解的四個(gè)指數(shù)(步驟C-6)(仍參見表4d,第6至第9列,但l=2的第4行):對(duì)于p1=2(第6列),指數(shù)為1,對(duì)于pi=3,5,7(第7至第9列),指數(shù)為零。
○仍參見表4d,讀取5!(對(duì)應(yīng)于(n-1-k)!)的分解的四個(gè)指數(shù)(步驟C-7),但是此時(shí)是在第2至第5列的l=5的第7行。對(duì)于p1=2(第2列),指數(shù)為3。對(duì)于p2=3(第3列),指數(shù)為1,對(duì)于p3=5(第4列),指數(shù)也為1。另一方面,對(duì)于p4=7(第5列),指數(shù)為零。
○在步驟C-8中,計(jì)算部分秩

的分解的四個(gè)指數(shù): ○對(duì)于p1=2, ○對(duì)于p2=3, ○對(duì)于p3=5, ○對(duì)于p4=7, 在步驟C-9中,根據(jù)分解的指數(shù)計(jì)算部分秩

:23×30×51×70=40。
再次參見圖5,在步驟C-10中,通過根據(jù)關(guān)系進(jìn)行更新(加上在步驟C-9中得到的部分秩

)而確定置換的總秩t。
然后,步驟C-11旨在遞減變量k(k=k-1),且步驟C-12是對(duì)k值的測(cè)試,以確定是否繼續(xù)處理。因此,如果k≥0(測(cè)試C-12輸出“是”),處理運(yùn)算的步驟則從第一步驟C-1開始重復(fù),其中將k的值減去一個(gè)單位。否則(測(cè)試C-12輸出“否”),該處理則終止在結(jié)束步驟C-13中(“結(jié)束”)。
因此,將會(huì)理解,上述步驟C-9根據(jù)在步驟C-8中確定的部分秩的分解計(jì)算部分秩,部分秩的分解根據(jù)三個(gè)中間分解確定: -(n-1-k)! -Sk,以及 -Pk。
在步驟C-6和C-7中執(zhí)行的其中兩個(gè)((n-1-k)!和Sk)的確定包括在基本分解的各表Dl和Dl!中的簡(jiǎn)單讀取。第三中間分解(Pk的分解)的確定也可以簡(jiǎn)單地根據(jù)在表Dl!中讀取的、w[d]!的q個(gè)基本分解而按照以下關(guān)系式執(zhí)行: 1≤i≤mn!。
直接變體 步驟C-3表示了確定該中間分解的更為有利的變體。實(shí)際上,Pk的中間分解可根據(jù)在表Dl!中讀取的基本分解和被計(jì)算用于另一部分秩

的另一中間分解(Pk+1的中間分解)(例如k的迭代中的在先的部分秩

)而確定。更普遍地,在本發(fā)明的變體中,中間分解也可以根據(jù)用于至少一個(gè)其它部分秩的先前確定的至少一個(gè)中間分解而推出。
在上文中,秩的計(jì)算通過從最后位置(k=n-1)到第一位置(k=0)的循環(huán)來執(zhí)行。然而,本發(fā)明當(dāng)然也適用于從第一位置到最后位置的循環(huán)。所有需要的是改變初始化相位并調(diào)整步驟C-2和C-3及其次序。為此,權(quán)w的表可以用q個(gè)權(quán)

進(jìn)行初始化。然后,對(duì)于從0到q-1的d,在表Dl!中讀取w[d]!的分解的mn!個(gè)指數(shù),以通過累加中間分解的表的mn!個(gè)值(P0的分解的指數(shù))來進(jìn)行計(jì)算。
然后,在步驟C-10之后且在步驟C-2之前進(jìn)行步驟C-3。通過從P[i]中減去w[dk]的基本分解的指數(shù)

(對(duì)于1≤i≤mn!)而對(duì)P的中間分解進(jìn)行更新。然后,通過將w[dk]的值遞減1(w[dk]=w[dk]-1)而進(jìn)行步驟C-2。步驟C-11可以標(biāo)定為將變量k遞增1,而步驟C-12簡(jiǎn)單地測(cè)試是否k=n。
應(yīng)簡(jiǎn)要地注意,對(duì)于具有可變維數(shù)n的置換碼,比執(zhí)行

個(gè)運(yùn)算更優(yōu)選的是,在初始化之后讀取mn!以僅執(zhí)行mn!次運(yùn)算。
第一實(shí)施方式的一般變體 更普遍地,在圖5中示出的用于根據(jù)本發(fā)明的編碼的實(shí)施允許多個(gè)變體。
因此,在第一變體中,(l或l!的)每一基本分解還包含數(shù)ml!。數(shù)ml!(0≤l≤n)的讀取提供了有利條件。實(shí)際上,步驟C-3以及C-6至C-10不再均執(zhí)行mn!次,而是: ○對(duì)于步驟C-3,僅執(zhí)行

次, ○對(duì)于步驟C-6和步驟C-8的

的相加,僅執(zhí)行

次,并且 ○對(duì)于步驟C-7和C-9以及步驟C-8的的相減,僅執(zhí)行m(n-1-k)!次。
此外,如果已存儲(chǔ)了值ml,那么僅需執(zhí)行: ○步驟C-3

次,且 ○步驟C-6

次以及步驟C-8的相加。
在編碼的另一變體中,如果如果除此之外還根據(jù)第三方案(上文的表4c)使用了l的基本分解的指數(shù)的存儲(chǔ),則可對(duì)

個(gè)值執(zhí)行步驟C-3。類似地,對(duì)

個(gè)值執(zhí)行步驟C-6。在步驟C-8中,不提供m(n-1-k)!個(gè)相加和m(n-1-k)!個(gè)相減,而是將待執(zhí)行的相減的數(shù)量保持為m(n-1-k)!但是僅需要

個(gè)相加。具體地: ■對(duì)于1≤i≤m(n-1-k)! ■且,對(duì)于 在第三變體中,不將部分秩分解為三項(xiàng)(分子中兩項(xiàng),分母中一項(xiàng)),而是將其分解為兩項(xiàng),其中之一為商。因此,部分秩

被分解為兩項(xiàng): -和Sk -商 該商可以由下列關(guān)系更新: 因此,不根據(jù)q+1個(gè)基本分解(在表Dl!中讀取的(n-1-k)!的分解以及q個(gè)w[dk]!的分解)確定Rk的分解,而是更優(yōu)選地根據(jù)Rk+1的中間分解以及(n-1-k)的和w[dk](這兩個(gè)基本分解是在表Dl中讀取的)的基本分解確定Rk的中間分解,其表示為: 與前述變體相比,不用確定和存儲(chǔ)

的分子的中間分解(表P),而是確定商Rk的中間分解然后將其存儲(chǔ)(為此目的提供表R)。將表P初始化為零替代為將該比率的指數(shù)的表R初始化為零。步驟C-3變?yōu)橛糜诟卤鞷的簡(jiǎn)單步驟(通過讀取(n-1-k)和w[dk]的基本分解的指數(shù)),該步驟表示為: 根據(jù)存儲(chǔ)選項(xiàng),該更新可以通過進(jìn)行mn!個(gè)相加和相減或m(n-1-k)!個(gè)相加(或者

個(gè)相減),或者甚至m(n-1-k)個(gè)相加(或者

個(gè)相減),或者僅對(duì)于w[dk]和(n-1-k)的非零指數(shù)進(jìn)行m′(n-1-k)個(gè)相加和

個(gè)相減而實(shí)現(xiàn)。步驟C-8則僅包括以下類型的相加: 根據(jù)存儲(chǔ)選項(xiàng),然后計(jì)算mn!個(gè)相加或

個(gè)相加,或者甚至

個(gè)相加,或者僅對(duì)于Sk的非零指數(shù)進(jìn)行的

個(gè)相加。
將要注意的是,比率Rk不必是整數(shù),這意味著指數(shù)R[i]可以是負(fù)數(shù)。在該變體中,編碼中的階乘的分解(因此為表Dl!)不再有用,從而可通過僅存儲(chǔ)表Dl來使用整數(shù)l(l≤n)的(n+1)個(gè)基本分解的簡(jiǎn)單集。
分解的指數(shù)的緊湊表示 現(xiàn)在基于分解的指數(shù)緊湊表示對(duì)編碼的第二實(shí)施方式進(jìn)行描述。
如上文中參照第一實(shí)施方式所述,將基本分解的指數(shù)緊湊地表示,而不再以展開形式表示。出于簡(jiǎn)潔的目的,只說明指數(shù)的緊湊表示包含在單字中的情況。因此,將這些字如上述地儲(chǔ)存,且在分別表示為D′l和D′l!的兩個(gè)具有(n+1)個(gè)單元的表中存儲(chǔ)l=0的啞字。包含基本分解的指數(shù)的字的兩個(gè)表中的地址計(jì)算是直接的,因?yàn)闉榱俗x取l!(或l)的分解的字,所需要的僅是指向表D′l!(或D′l)的地址l。
要注意的是,在沒有存儲(chǔ)用于l=0的啞字的情況下,對(duì)應(yīng)于基本分解l(l>0)的字位于表D′l的地址(l-1)上。
根據(jù)第二實(shí)施方式的編碼 初始化 ●將包含Pk的中間分解的mn!個(gè)指數(shù)的緊湊表示的字eP初始化為零: eP=0 字eP會(huì)在每一個(gè)位置更新(下面的步驟CC-3)。
●如前所述,將存儲(chǔ)在具有q個(gè)單元的表w中的秩t和q個(gè)權(quán)

也初始化為值零。相應(yīng)的指令是: ○ t=0 ○ w[i]=0,0≤i<q ○ k=n-1 在n個(gè)位置上的迭代(對(duì)k進(jìn)行循環(huán)) 現(xiàn)在參考圖6說明該第二實(shí)施方式中的編碼的主要步驟。圖6中的步驟符號(hào)“CC-n”中的字符“CC”表示用“緊湊表示”進(jìn)行“編碼”。
在步驟CC-1中,讀取變量dk。步驟CC-2包含變量w的更新:w[dk]=w[dk]+1。
步驟CC-3是字eP的更新,具體地: -在步驟CC-31中,讀取表D′1中包含w[dk]的分解的指數(shù)的緊湊表示的字

然后, -在步驟CC-32中,更新字: 同時(shí),在步驟CC-4中,計(jì)算和Sk。后續(xù)步驟CC-5是對(duì)Sk的值的測(cè)試。如果和Sk是零(箭頭“否”),索引k則直接減一。否則(在測(cè)試步驟CC-5輸出箭頭“是”),程序則繼續(xù)到步驟CC-6中,讀取表D′l中的包含Sk的分解的指數(shù)的緊湊表示的字
同時(shí)(并且有利地依據(jù)測(cè)試步驟CC-5的結(jié)果),在步驟CC-7中,在表D′l!中讀取包含(n-1-k)!的指數(shù)的緊湊表示的字e(n-1-k)!。
在步驟CC-8中,將從步驟CC-3、CC-6、CC-7獲得的結(jié)果匯總在一起,以通過兩個(gè)簡(jiǎn)單的運(yùn)算(優(yōu)選地在加運(yùn)算后進(jìn)行減運(yùn)算),計(jì)算包含部分秩

的指數(shù)的緊湊表示的字
然后, 步驟CC-9的目的是通過如前所述的對(duì)字的位進(jìn)行適當(dāng)?shù)囊莆粊沓槿〔糠种?

的分解的mn!個(gè)指數(shù)

為此,提供對(duì)從1到mn!的索引i的循環(huán)(將i在步驟CC-91初始化為1,在步驟CC-93測(cè)試i值,在步驟CC-94將i遞增直到其達(dá)到mn!的值)。這樣,則已在如下類型的指令步驟CC-92應(yīng)用i的每一個(gè)循環(huán): i′1)
i′2) 符號(hào)“<<b”和“>>b”分別表示b位的左移位和右移位。另外,符號(hào)“&”表示按位進(jìn)行的“與”邏輯運(yùn)算符。指令i′1)包括恢復(fù)



個(gè)低位。實(shí)際上,對(duì)應(yīng)于指令的掩碼是硬連線設(shè)置的。
換句話說,高位的掩碼應(yīng)用于開始時(shí)(循環(huán)索引等于1時(shí)),這樣可以首先僅恢復(fù)



個(gè)低位,從而給出與第一素因數(shù)p1相關(guān)的指數(shù)
于是: -將

的位“向右”移動(dòng)

位,以恢復(fù)最高序位并給出與高位的下一個(gè)素因數(shù)p2(掩碼)相關(guān)的指數(shù), -然后指數(shù)

得以抽取, -然后進(jìn)行

位的右移, 依此繼續(xù),直到i=mn!。
接下來的步驟CC-10包括如下計(jì)算部分秩
然后,將部分

加到總秩t上(在步驟CC-11中,)。
在下一步驟CC-12中,將索引k的值遞減(k=k-1),并且該遞減是在用遞減后的值重新開始步驟CC-4、CC-1、CC-7以及后續(xù)步驟之前進(jìn)行。在測(cè)試步驟CC-13中進(jìn)行檢查以確定k的值是否還未達(dá)到-1,如果達(dá)到了-1(k<0),則程序終止(步驟CC-14)。
所以,不考慮分解的表示,本發(fā)明就可有效地計(jì)算部分秩。步驟CC-10的目的是根據(jù)在之前的步驟CC-8和CC-9中確定的部分秩的分解計(jì)算部分秩。使用了三個(gè)中間分解((n-1-k)!、Sk和Pk的分解)。在步驟CC-6和CC-7中執(zhí)行的其中兩個(gè)((n-1-k)!和Sk)的確定在于,在表D′l!和D′l中簡(jiǎn)單地讀取其緊湊表示。在步驟CC-3中執(zhí)行的第三中間分解(Pk)的確定也需要對(duì)表D′l進(jìn)行讀取,然后通過加上已讀取的基本分解的緊湊表示來更新該中間分解的緊湊表示。
根據(jù)前述的第一實(shí)施方式,值ml!(0≤l≤n)的存儲(chǔ)可降低步驟CC-9和CC-10的復(fù)雜性。抽取部分秩

的分解的指數(shù)的循環(huán)執(zhí)行m(n-1-k)!次而不是mn!次。類似地,步驟CC-10不再包含mn!次乘法,而是包含m(n-1-k)!次乘法。
現(xiàn)在說明采用本發(fā)明進(jìn)行的置換的秩的解碼。
這里,依據(jù)基本分解的表示(展開的或緊湊的)的技術(shù)方案,存在一些變體。下面,類似于上文對(duì)編碼的第一實(shí)施方式的描述,根據(jù)根據(jù)參照表4d給出的第四方案,利用分解的展開表示及其存儲(chǔ),對(duì)解碼的第一實(shí)施方式進(jìn)行描述。顯而易見的是,以Schalkwijk算法為例,本發(fā)明優(yōu)選地可應(yīng)用于置換的秩的解碼。
根據(jù)第一實(shí)施方式的解碼 對(duì)分解的指數(shù)使用展開表示的解碼優(yōu)選地以如下的數(shù)據(jù)初始化開始。
初始化 ●將值w的表用q個(gè)權(quán)

初始化(在將在下面說明的步驟D-19中,在每一個(gè)位置上的循環(huán)的尾部對(duì)w進(jìn)行更新)。適當(dāng)?shù)闹噶羁梢允且韵骂愋? ○ 0≤i<q ●計(jì)算項(xiàng)P0的分解的mn!個(gè)指數(shù)(將其存儲(chǔ)在具有mn!個(gè)單元的表P中,并在下文中將描述的步驟D-18在每個(gè)位置的循環(huán)的末尾對(duì)其進(jìn)行更新),適當(dāng)?shù)闹噶羁梢允且韵骂愋? ○P[i]=0,1≤i≤mn! ○從d=0到q-1的循環(huán) ■讀取表Dl!中的、

的分解的mn!個(gè)指數(shù)
■然后,其中1≤i≤mn! ●最后,初始化k=0 現(xiàn)在參考圖7以說明根據(jù)第一實(shí)施方式的解碼的主要步驟。圖7中步驟D-n的符號(hào)中的字符“D”表示“解碼”。
在n個(gè)位置上迭代(對(duì)索引k的循環(huán)) 第一步驟D-1在于從表Dl!中讀取(n-1-k)!的分解的mn!個(gè)指數(shù) 下一個(gè)步驟D-2設(shè)置值dk=0以及 接下來是搜索字母表的dk的第一值,以使w[dk]≠0。為了這個(gè)目的,提供測(cè)試步驟D-3以檢查是否w[dk]=0,如果w[dk]=0(箭頭“是”),則將dk的值遞增(dk=dk+1),并且重復(fù)測(cè)試步驟D-3,直到發(fā)現(xiàn)非零的w[dk]值。如果已發(fā)現(xiàn)該值(w[dk]≠0的箭頭“否”),下一步驟則對(duì)秩t的值進(jìn)行測(cè)試的步驟D-5。如果秩是零(測(cè)試步驟D-5輸出箭頭“是”),那么,采取接下來的步驟都是無意義,直到Pk的指數(shù)被更新(步驟D-18)。如果秩不是零(測(cè)試步驟D-5輸出箭頭“否”),程序則繼續(xù)執(zhí)行后續(xù)步驟D-6和D-7,其中分別設(shè)置Sk=0和中間值 下一步驟D-8是用于更新和Sk=Sk+w[dk]的計(jì)算。隨后對(duì)和Sk的分解的mn!個(gè)指數(shù)

的表Dl進(jìn)行讀取。
步驟D-10的目的是根據(jù)關(guān)系式(其中1≤i≤mn!),計(jì)算部分秩的分解的mn!個(gè)指數(shù)

。在當(dāng)前循環(huán)的末尾對(duì)如上初始化的指數(shù)P[i]在步驟D-18更新以用于下一個(gè)循環(huán),此步驟將在后面說明。
步驟D-11的目的是計(jì)算部分秩: 接下來的三個(gè)步驟的目的是通過將總秩t的值與部分秩比較而計(jì)算總秩t的值。為了實(shí)現(xiàn)此目的,在步驟D-12中,將dk的值遞增(dk=dk+1),并且在測(cè)試步驟D-13測(cè)試: 如果滿足該不等式(箭頭“是”),步驟D-7到D-13則以dk遞增后的新值進(jìn)行重復(fù)。否則(箭頭“否”),程序則執(zhí)行步驟D-14,用于遞減dk(dk=dk-1)以在步驟D-12前返回到dk值。對(duì)于dk的該值,部分秩

取上述的中間值Ik(步驟D-15:)。于是,秩t得到更新,成為(步驟D-16),并且根據(jù)表Dl中w[dk]的分解的mn!個(gè)指數(shù)

的讀數(shù)將Pk的指數(shù)更新(步驟D-17)。接下來,適當(dāng)?shù)馗轮笖?shù)為其中1≤i≤mn!(步驟D-18)。然后將w[dk]的值遞減(在步驟19,w[dk]=w[dk]-1),并將索引k的值遞增(步驟D-20,k=k+1),以準(zhǔn)備下一個(gè)循環(huán)。
在返回第一步驟D-1前,進(jìn)行檢查以確保還有n個(gè)分量未被處理。為此,提供測(cè)試步驟D-21,通過將k的值與n進(jìn)行比較(k<n),對(duì)k的值進(jìn)行測(cè)試。只要索引k還未達(dá)到值n(測(cè)試D-21輸出為箭頭“是”),處理則在下一個(gè)k值的步驟D-1重新開始。否則(在步驟D-21輸出處的箭頭“否”),處理則在結(jié)束步驟D-22終止。
應(yīng)當(dāng)記住,步驟D-11的目的是通過根據(jù)項(xiàng)(n-1-k)!、Sk和Pk三個(gè)中間分解利用在步驟D-10中確定的部分秩的分解來計(jì)算該部分秩。在步驟D-1和D-9中執(zhí)行的其中兩個(gè)((n-1-k)!和Sk)的確定包括在各表Dl!和Dl中的簡(jiǎn)單讀取。在步驟D-18中確定的第三中間分解(Pk)也通過讀取表Dl(步驟D-17)、接著通過將中間分解的指數(shù)減去已被讀取的基本分解的指數(shù)而對(duì)其進(jìn)行更新(步驟D-18)。上述對(duì)中間分解的初始化需要對(duì)表Dl!進(jìn)行q次讀取,然后通過將中間分解的指數(shù)加上q個(gè)基本分解讀數(shù)而對(duì)其進(jìn)行更新。
關(guān)于上文描述的編碼,圖7的處理允許可在合適的情況下降低某些步驟的復(fù)雜性的變體。
涉及比率Rk(如前所述)的指數(shù)的使用的變體尤其值得注意。實(shí)際上,在上述參考圖7描述的解碼運(yùn)算過程中,對(duì)于給定的位置k,對(duì)多個(gè)d值計(jì)算指數(shù)

。對(duì)于測(cè)試的每一個(gè)d值,對(duì)于每個(gè)指數(shù)而言,其它變體需要進(jìn)行減和加()。但是,使用比率Rk的指數(shù)的變體僅需要進(jìn)行加法(),這是因?yàn)閷?duì)于給定的位置k,僅有和Sk及其指數(shù)

是根據(jù)d變化的。
根據(jù)第二實(shí)施方式的解碼 現(xiàn)在參考圖8說明使用分解的緊湊表示進(jìn)行解碼的實(shí)施例。
首先,將數(shù)據(jù)如下初始化。
初始化 ●應(yīng)先參考具有q個(gè)單元的表w以確定項(xiàng)其中0≤i<q。
●計(jì)算包含Pk的分解的mn!個(gè)指數(shù)的緊湊表示的字eP。為此: ○設(shè)置eP=0 ○提供從d=0到q-1的循環(huán): ■在表D′l!中讀取包含

的mn!個(gè)指數(shù)的緊湊表示的字
■更新 ●然后設(shè)置k=0 在n個(gè)位置上迭代(對(duì)索引k的循環(huán)) 圖8中的步驟DC-n的符號(hào)中的字符“DC”表示采用“緊湊表示”進(jìn)行“解碼”。
步驟DC-1,在表D′l!中讀取包含項(xiàng)(n-1-k)!的mn!個(gè)指數(shù)的緊湊表示的字e(n-1-k)!。
步驟DC-2到DC-8與上文中參考圖7描述的步驟DC-2到DC-8類似。
另一方面,在步驟DC-9中,讀取包含在表D′l中的和Sk的mn!個(gè)指數(shù)的緊湊表示的字

。然后,在步驟DC-10中,計(jì)算包含部分秩

的指數(shù)的緊湊表示的字,優(yōu)選地如下計(jì)算: 然后 總體步驟DC-11總體上在于部分秩

的指數(shù)的抽取。為此,規(guī)定: -對(duì)i(1≤i≤ml!)進(jìn)行循環(huán)(在步驟DC-111中將i初始化為i=1,然后抽取指數(shù)

(步驟DC-112,下文將描述),將循環(huán)索引i與值mn!進(jìn)行比較(步驟DC-113),將索引加1(步驟DC-114)直到其達(dá)到值mn!); -抽取指數(shù)

(步驟DC-112): 通過用掩碼屏蔽

的高位而將其在緊湊指數(shù)

的低位表示:
在屏蔽后,將緊湊指數(shù)

右移

位: 總體步驟DC-11與圖6中用于編碼的總體步驟CC-9類似。
步驟DC-12到DC-17類似于參考圖7中以展開表示進(jìn)行解碼的步驟D-11到D-16類似。
另一方面,通過在步驟DC-181在表D′l中讀取包含w[dk]的mn!個(gè)指數(shù)的緊湊表示的字

,并在步驟DC-182對(duì)Pk的指數(shù)進(jìn)行適當(dāng)?shù)母?),而實(shí)現(xiàn)總體步驟DC-18中對(duì)Pk的指數(shù)(表P)的更新。
然后,步驟DC-19到DC-22類似于圖7中采用展開的分解進(jìn)行解碼中的步驟D-19到D-22。
現(xiàn)在說明上述變體提供的各種優(yōu)點(diǎn)。
使用ml!(和/或ml或m′l)的表并具有展開表示的第一實(shí)施方式的變體比僅使用mn!的表的主實(shí)施方式包含更少的加/減運(yùn)算。
在該情況下,首先,對(duì)于最后的位置,復(fù)雜性的降低是非常顯著的(即,當(dāng)m(n-k)!,m′l或ml小于mn!時(shí))。但是,這種復(fù)雜性的降低伴隨著存儲(chǔ)器讀取步驟(C-31、C-6和C-7)的復(fù)雜性的提高。另一方面,盡管待讀取的值更少了,但是地址計(jì)算更復(fù)雜。
值得注意的折衷方案包含規(guī)律地存儲(chǔ)基本分解(具有mn!個(gè)指數(shù)),以幫助實(shí)現(xiàn)表Dl和Dl!的尋址,然后將值ml!儲(chǔ)存在具有(n+1)個(gè)單元的表Dm中。然后,應(yīng)存儲(chǔ)值ml,以有效地減少加/減的數(shù)量。但是,該措施必然伴隨著在步驟C-6和D-9(或C-3和D-19)之前讀取值

,而值m(n-k)!必須僅在k的每次迭代開始時(shí)讀取。
另外,與展開表示相比,緊湊表示的益處如下: -更新表P的步驟僅包括在編碼中(或在解碼中)進(jìn)行單一的加(或減), -指數(shù)

的計(jì)算也僅需要單一的加和單一的減, -用于讀取字eK的地址計(jì)算是直接的,并對(duì)于每一個(gè)值K僅需要單一的存儲(chǔ)器訪問和讀取。
但是,緊湊表示需要抽取包含在字

中的部分秩

的指數(shù)(步驟CC-9和DC-11)。但是,如會(huì)在下述內(nèi)容中看到的,對(duì)于根據(jù)部分秩的素因數(shù)分解計(jì)算部分秩而言,該操作不一定是缺點(diǎn)。
現(xiàn)在說明用于根據(jù)部分秩的素因數(shù)分解計(jì)算部分秩的這些變體的優(yōu)點(diǎn)。
對(duì)于編碼中(或解碼中)步驟C-9和CC-10(或D-11和DC-12),用于計(jì)算素因數(shù)冪的乘積的步驟的復(fù)雜性隨著因數(shù)數(shù)量的增加顯著地增加,即使其仍然遠(yuǎn)不如現(xiàn)有技術(shù)中的除法復(fù)雜。現(xiàn)在,實(shí)際上,部分秩分解中的許多指數(shù)都是零,因此其相應(yīng)的冪都為1。經(jīng)常地,所有的指數(shù)都是零,或者僅第一指數(shù)是非零。所以,能夠僅檢測(cè)并保持非零的指數(shù)冪是有用的。在詳細(xì)表示中,該檢測(cè)可僅通過mn!個(gè)測(cè)試或m(n-1-k)!個(gè)測(cè)試(每個(gè)檢測(cè)用于一個(gè)素因數(shù))而執(zhí)行。
有利地,緊湊表示使得通過單次測(cè)試就能測(cè)試出所有的指數(shù)是否為零(是否),并且如果是的話,則秩t′=1。另外,對(duì)et′的高位的檢測(cè)使得可獲得秩t′中最大非零指數(shù)素因數(shù)的索引,并可減少編碼中的步驟CC-9(或解碼中的DC-11)的循環(huán)的重復(fù)次數(shù)。
但是應(yīng)該注意,對(duì)如緊湊表示的詳細(xì)表示中的非零指數(shù)的檢測(cè)會(huì)增加復(fù)雜性。如果所有的指數(shù)都是非零的,素因數(shù)的冪的乘法的復(fù)雜性則會(huì)保持不變,且該復(fù)雜性然后會(huì)因檢測(cè)非零指數(shù)的過程的復(fù)雜性而增加。
因此,在第一變體中,只有當(dāng)素因數(shù)的可能的數(shù)量變得很大(k遠(yuǎn)小于n)且其冪的乘法的復(fù)雜性高于檢測(cè)過程的復(fù)雜性時(shí),才能進(jìn)行零指數(shù)的檢測(cè)。為此,可提供根據(jù)位置的不同循環(huán),即使該實(shí)施會(huì)以指令行的增加為代價(jià)。
也可將展開表示和緊湊表示相結(jié)合。對(duì)于最后的位置(低的ml!值),中間分解的計(jì)算幾乎不需要運(yùn)算。于是,使用展開表示是受到歡迎的,因?yàn)檫@種表示不需要抽取部分秩的指數(shù)。另一方面,對(duì)于第一位置,使用緊湊表示則更加受到歡迎。
現(xiàn)在說明現(xiàn)有的編碼器/解碼器的一些示例性實(shí)施。
3GPP AMR-WB+編碼器 3GPP AMR-WB+編碼器(標(biāo)準(zhǔn)[3GPPTS26.304])采用代數(shù)矢量量化,其字典是8維的Gosset RE8網(wǎng)絡(luò)的置換碼的并集。
TCX技術(shù)對(duì)應(yīng)于通過變換的預(yù)測(cè)編碼。更具體地,其包括在感知加權(quán)濾波后應(yīng)用的FFT變換編碼方法。在標(biāo)準(zhǔn)[3GPPTS26.304]中,將獲得的FFT譜分割為8維的子波段(或子矢量),并且對(duì)這些子矢量分別地編碼。子矢量的量化采用常規(guī)的斷點(diǎn)網(wǎng)絡(luò)(network ofpoints)RE8。8維量化字典由從斷點(diǎn)網(wǎng)絡(luò)RE8獲得類型I的置換碼的并集構(gòu)成。
在根據(jù)標(biāo)準(zhǔn)[3GPPTS26.304]的TCX編碼器中,每一個(gè)置換碼對(duì)應(yīng)于給定的8維帶符號(hào)前導(dǎo)矢量。網(wǎng)絡(luò)RE8的斷點(diǎn)的量化索引由以下類型的公式計(jì)算: 索引=基數(shù)偏移+置換的秩 秩由Schalkwijk公式計(jì)算,而將基數(shù)偏移制成表格。然而,這些帶符號(hào)的前導(dǎo)通過其絕對(duì)前導(dǎo)表示,以優(yōu)化存儲(chǔ)和置換碼中的搜索。相關(guān)聯(lián)的絕對(duì)前導(dǎo)的列表可在以下參考資料中找到: 由Ragot S.、Bessette B.和Lefebvre R.在2004年5月的ICASSP會(huì)議論文集的第1卷第501-4頁發(fā)表的論文“Low-complexity multi-rate latticevector quantization with application to wideband TCX speech coding at 32kbit/s(應(yīng)用于32千位/秒的寬帶TCX語音編碼的低復(fù)雜性的多速率點(diǎn)陣矢量量化)”。
為了說明本發(fā)明的不同變體,下面介紹三個(gè)示例性實(shí)施。前兩個(gè)示例性實(shí)施關(guān)于置換的秩的計(jì)算(編碼),一個(gè)采用分解的展開表示,而另一個(gè)采用緊湊表示。
在下述的這些示例性實(shí)施以及相應(yīng)的附錄中,表R和P的索引為從R
到R[mn!-1]和從P
到P[mn!-1](而不是如上文的示例中介紹的從1到mn!),而對(duì)秩的計(jì)算的處理沒有特別的影響。
第一示例性實(shí)施(編碼) 在該實(shí)施方式中,采用基本分解的展開表示。
其指數(shù)存儲(chǔ)在兩個(gè)具有36個(gè)單元(=(8+1)x4)的表中。這些表在附錄A-11中給出,并且表示為Dl[36](包含整數(shù)l(0≤l≤8)的分解的指數(shù),因而對(duì)于0,存儲(chǔ)啞分解)以及Dl![36](包含其秩的分解的指數(shù))。
3、5和7的冪的三個(gè)表也被存儲(chǔ): Pow3[4]={1,3,9,27} Pow5[3]={1,5,25} Pow7[3]={1,7,49} 在該實(shí)施方式中,部分秩的分解是根據(jù)兩個(gè)中間分解而確定,這兩個(gè)中間分解中的一個(gè)是整數(shù)Sk的基本分解,而另一個(gè)是如下的商的中間分解: 如上所示,比根據(jù)對(duì)應(yīng)于(7-k)!和

的(q+1)個(gè)基本分解確定中間分解更優(yōu)選的是,根據(jù)Rk+1的中間分解和(7-k)和

的兩個(gè)基本分解確定該中間分解。該中間分解的四個(gè)指數(shù)存儲(chǔ)在表R中。


表11:用于位置k的部分秩的項(xiàng)的分解并用于8維置換碼的ml或ml!的最大值 本發(fā)明利用上表11中每個(gè)位置顯示的



的最大值以及m(7-k)!的知識(shí),從而不用計(jì)算索引大于這些限制的素因數(shù)的指數(shù)。
附錄A-12給出了相應(yīng)的過程。要注意的是,在這些位置上的循環(huán)被展開。還要注意的是,商的素因數(shù)pi的指數(shù)存儲(chǔ)在具有4個(gè)單元的表R的單元R[i-1]中。
第二示例性實(shí)施(編碼) 在3GPPAMR-WB+編碼器的變體中,基本分解以緊湊的方式表示。將包含其指數(shù)的字存儲(chǔ)在兩個(gè)具有9(=(8+1))個(gè)單元的表中。參考附錄A-21,表D′l包含用于整數(shù)l(0≤l≤8)的分解的字(因而具有對(duì)l=0的分解的啞存儲(chǔ)),并且表D′l!包含用于其秩的分解的字。
3、5和7的冪也存儲(chǔ)在具有12個(gè)單元(具有用于未使用的冪的0的空存儲(chǔ))的表Pow[12]中。
部分秩的分解根據(jù)三個(gè)中間分解確定,其中兩個(gè)是整數(shù)Sk和秩(7-k)!的基本分解,而第三個(gè)是如下所示的、部分秩的分母的中間分解: 如前所述,比根據(jù)

的q個(gè)基本分解確定Pk的中間分解更優(yōu)地,根據(jù)Pk+1的中間分解和

的基本分解確定該分解。包含該中間分解的四個(gè)指數(shù)的緊湊字在附錄A-22中記為“eP”。同樣,“el”表示包含部分秩的分解的四個(gè)指數(shù)的緊湊字。
這里,再次應(yīng)用m(7-k)!的知識(shí),以僅抽取表示部分秩的分解的、緊湊字的m(7-k)!個(gè)指數(shù)。
相應(yīng)的處理是附錄A-22的主題。這里,在所述位置上的循環(huán)也是展開的。
第三示例性實(shí)施(解碼) 第三示例性實(shí)施處理在3GPP AMR-WB+解碼中進(jìn)行的置換的秩的解碼。
如在第一示例性實(shí)施例中一樣,優(yōu)選地使用基本分解的展開表示,并如在第二示例性實(shí)施例中一樣,優(yōu)選地使用部分秩的三項(xiàng)分解。但是,在位置上的循環(huán)是未展開的。
如前所述,Pk的中間分解是根據(jù)的Pk-1的中間分解以及

的基本分解來確定,而不是根據(jù)基本分解來確定。此中間分解的四個(gè)指數(shù)都被存儲(chǔ)于表P中。與此相似,根據(jù)Pk的中間分解和(7-k)!的基本分解,能計(jì)算另一個(gè)中間分解(商的中間分解),其指數(shù)存儲(chǔ)于表R中。
相應(yīng)的處理是附錄A-3的主題。應(yīng)當(dāng)注意的是,商(或乘積)的素因數(shù)pi的指數(shù)存儲(chǔ)于具有四個(gè)單元的表R的單元R[i-1]中(或表P的單元P[i-1])。
因此,以上第一示例在兩項(xiàng)(包括商)中使用了部分秩的分解,另外兩個(gè)示例在三項(xiàng)中(分子兩項(xiàng),分母一項(xiàng))使用了分解。用于解碼的模式僅使用了m8!(=4)項(xiàng),但是用于編碼的兩個(gè)模式使用了單獨(dú)的位置處理以使用ml!或ml個(gè)項(xiàng),所述ml!或ml項(xiàng)不被讀取,但卻通過在Gosset網(wǎng)絡(luò)的斷點(diǎn)的八個(gè)位置上打破循環(huán)而“硬連線”于算法中。
TDAC解碼器的示例性實(shí)施 最終的示例性實(shí)施涉及申請(qǐng)人的TDAC感知式頻率解碼器,所述解碼器用于對(duì)以16kHz(多種頻率)采樣的數(shù)字音頻信號(hào)進(jìn)行解碼,以下將說明所述解碼器的原理。
TDAC解碼器使用最大維數(shù)為15的、具有可變的維數(shù)和分辨率的統(tǒng)計(jì)矢量量化。
關(guān)于8維常規(guī)斷點(diǎn)網(wǎng)絡(luò)RE8的置換碼,本發(fā)明基本上可以降低復(fù)雜性。但是,就使用維數(shù)大于12的置換碼的TDAC解碼器而論,本發(fā)明顯示出極大的優(yōu)勢(shì),因?yàn)槠洳粌H允許降低復(fù)雜性,還能使解碼器在最大精度限制為無符號(hào)32位整數(shù)的定點(diǎn)處理器上的實(shí)現(xiàn)。如果沒有本發(fā)明,這種實(shí)現(xiàn)將是非常復(fù)雜的。
此解碼器的原理如下。
將帶寬被限定為7kHz且以16kHz采樣的聲頻信號(hào)再分為具有320個(gè)(20ms的)采樣的幀。將改進(jìn)的離散余弦變換(MDCT)應(yīng)用于具有50%的重疊的640個(gè)采樣的輸入信號(hào)塊(相當(dāng)于每20ms刷新一次MDCT分析)。通過將最后31個(gè)系數(shù)都設(shè)置為零(因此僅有前289個(gè)系數(shù)不為零)來將頻譜限定為7225Hz。根據(jù)此頻譜確定屏蔽曲線,并將所有被屏蔽的系數(shù)設(shè)置為零。將所述頻譜分為32個(gè)寬度不相等的頻段。任意被屏蔽的頻段都根據(jù)信號(hào)的變換系數(shù)來確定。對(duì)于所述頻譜的每個(gè)頻段,計(jì)算MDCT系數(shù)的能量(以估計(jì)比例因數(shù))。由32個(gè)比例因數(shù)組成信號(hào)的譜包絡(luò),然后在所述幀內(nèi)進(jìn)行量化、解碼以及傳遞所述信號(hào)。位的動(dòng)態(tài)分配基于用于根據(jù)譜包絡(luò)的量化形式計(jì)算出的每個(gè)頻段的屏蔽曲線,以便在編碼器和解碼器的二進(jìn)制分配之間后獲得兼容性。然后,由矢量量化器利用在大小上嵌套的字典將每個(gè)頻段中的標(biāo)準(zhǔn)化的MDCT系數(shù)進(jìn)行量化,所述字典由II型置換碼的并集組成。最終,將語調(diào)和聲音信息以及譜包絡(luò)和編碼系數(shù)都在幀內(nèi)多路傳輸并傳送。
此時(shí),用于計(jì)算置換的秩(解碼)的示例性實(shí)施使用分解的緊湊表示。所使用的置換碼的維數(shù)是可變的,在所述位置上的循環(huán)不是展開的。此實(shí)施例圖示出對(duì)部分秩的分解的非零指數(shù)進(jìn)行檢測(cè)的方法。
在此,基本分解被緊湊表示。包括其指數(shù)的字被存儲(chǔ)于兩個(gè)具有16個(gè)(=(15+1))單元的表中。在附錄B-1中,表

包含用于整數(shù)

的分解的字,且表

包含用于其秩的分解的字。
3的冪也被存儲(chǔ)于具有八個(gè)單元的表中(表示為Pow3),且5、7、11以及13的冪被存儲(chǔ)于具有二十個(gè)單元(具有用于未使用的冪的啞存儲(chǔ))的表中(表示為Pow)。
相應(yīng)的處理被重新轉(zhuǎn)錄在附錄B-2中。
當(dāng)然,本發(fā)明并不局限于以上以示例方式描述的實(shí)施例,而是還包含其它的變形。
對(duì)于申請(qǐng)人的知識(shí),本發(fā)明包括置換碼中的素因數(shù)冪分解的第一使用。但是,如同在以置換碼進(jìn)行的矢量量化中一樣,當(dāng)提供組合的表示計(jì)算時(shí),這種使用尤其有利。因此,一般地,本發(fā)明的目的在于,在用一個(gè)或多個(gè)置換碼進(jìn)行的編碼/解碼中的、用于任何組合表示(即使不同于置換的秩)的素因數(shù)冪分解的這種使用。
有利地,本發(fā)明能夠應(yīng)用于語音信號(hào)的編碼/解碼中,例如在電話終端中,尤其是蜂窩式電話終端中。但是,本發(fā)明也應(yīng)用于其它任意類型的信號(hào)(尤其是圖像或視頻信號(hào))的編碼/解碼以及編碼調(diào)制。
本發(fā)明的目的還在于使用置換碼的、設(shè)計(jì)以存儲(chǔ)于數(shù)字信號(hào)編碼/解碼裝置的存儲(chǔ)器中的計(jì)算機(jī)程序。因而,此程序包括用于執(zhí)行本發(fā)明意義上的方法的步驟的指令。特別是,以上描述的圖4至圖8能夠?qū)?yīng)于這種程序可包括的算法流程圖。
本發(fā)明的目的還在于一種數(shù)字信號(hào)編碼/解碼裝置,參考圖9,所述數(shù)字信號(hào)編碼/解碼裝置使用置換碼并包括: -存儲(chǔ)單元MEM,其用于存儲(chǔ)前面提到的類型的計(jì)算機(jī)程序的指令,以及預(yù)先記錄的所選整數(shù)的分解的表示,以及 -計(jì)算模塊PROC,其訪問存儲(chǔ)單元MEM以執(zhí)行本發(fā)明意義上的方法。
這些裝置MEM、PROC能夠被設(shè)計(jì)為: ●根據(jù)所選的碼矢量y給出置換的秩t(圖9中的實(shí)線箭頭): ○在信源編碼器的索引模塊中,或者 ○在信道解碼器的索引模塊中, ●或者根據(jù)置換的秩t給出待重構(gòu)的碼矢量y(圖9中的虛線箭頭): ○在信源解碼器的解碼模塊中,或者 ○在信道編碼器的編碼模塊中。
當(dāng)然,存儲(chǔ)器MEM中的預(yù)先記錄的表示可以是地址內(nèi)容的形式(展開表示)或者是位字的形式(緊湊表示)。
附錄 A-11 Dl[36]={ 0,0,0,0, 0,0,0,0, 1,0,0,0, 0,1,0,0, 2,0,0,0, 0,0,1,0, 1,1,0,0, 0,0,0,1, 3,0,0,0};Dl![36]={0,0,0,0,/*0!*/0,0,0,0,/*1!*/1,0,0,0,/*2?。?1,1,0,0,/*3?。?3,1,0,0,/*4?。?3,1,1,0,/*5!*/4,2,1,0,/*6?。?4,2,1,1,/*7?。?7,2,1,1,/*8!*/}; A-12 Initialization:● t=0● w[i]=0,0≤i<q● R
=0 Processing of the positions● Position k=7:○ d7=d[7];w[d7]=1● Position k=6:○ d=d[6];w[d]=w[d]+1○ If(d=d7)then R
=1else if(d>d7)t=1● Position k=5: ○ d=d[5];w[d]=w[d]+1 ○ R
=R
+Dl[4*2]-Dl[4*w[d]] ○ R[1]=-Dl[4*w[d]+1] ○ S=0;loop from j=0tod-1:S=S+w[j] ○ Test if S>0;if yes:■ i2=R
+Dl[4*S]■ t=t+(1<<i2)● Positions k=4then 3: ○ d=d[k];w[d]=w[d]+1 ○ R
=R
+Dl[4*(7-k)]-Dl[4*w[d]] ○ R[1]=R[1]+Dl[4*(7-k)+1]-Dl[4*w[d]+1] ○ S=0;loop from j=0 to d-1:S=S+w[j] ○ Test if S>0;if yes: ■ i2=R
+Dl[4*S] ■ i3=R[1]+Dl[4*S+1] ■ t=t+pow3[i3]*(1<<i2)● R[2]=-Dl[4*w[d]+2]●Positions k=2then 1: ○ d=d[k];w[d]=w[d]+1 ○ R
=R
+Dl[4*(7-k)]-Dl[4*w[d]] ○ R[1]=R[1]+Dl[4*(7-k)+1]-Dl[4*w[d]+1] ○ R[2]=R[2]+Dl[4*(7-k)+2]-Dl[4*w[d]+2] ○ S=0;loop from j=0 to d-1:S=S+w[j] ○ Test if S>0;if yes:■ i2=R
+Dl[4*S]■ i3=R[1]+Dl[4*S+1]■ i5=R[2]+Dl[4*S+2]■ t=t+pow5[i5]*pow3[i3]*(1<<i2)● R[3]=-Dl[4*w[d]+3]● Position k=0: ○ d=d
;w[d]=w[d]+1 ○ R
=R
+Dl[4*7]-Dl[4*w[d]] ○ R[1]=R[1]+Dl[4*7+1]-Dl[4*w[d]+1] ○ R[2]=R[2]+Dl[4*7+2]-Dl[4*w[d]+2] ○ R[3]=R[2]+Dl[4*7+3]-Dl[4*w[d]+3] ○ S=0;loop from j=0tod-1:S=S+w[j] ○ Test if S>0;if yes: ■ i2=R
+Dl[4*S] ■ i3=R[1]+Dl[4*S+1] ■ i5=R[2]+Dl[4*S+2] ■ i7=R[3]+Dl[4*S+3] ■ t=t+pow7[i7]*pow5[i5]*pow3[i3]*(1<<i2) A-21 D'l={0,0,1,8,2,32,9,128,3} D'l!={0,0,1,9,11,43,52,180,183} Pow[12]={1,3,9,27,1,5,25,0,1,7,49,0}; A-22 Initialization: ● t=0 ● w[i]=0,0≤i<q ● eP=0 Position processing ● Position k=7: ○ d7=d[7];w[d7]=1 ● Position k=6: ○ d=d[6];w[d]=w[d]+1 ○ If(d=d7)then eP=1 else if(d>d7)t=1 ● Position k=5: ○ d=d[5];w[d]=w[d]+1 ○ eP=eP+D'l[w[d]] ○ S=0;loop from j=0 to d-1:S=S+w[j] ○ Test if S>0;if yes:■ i2=D'l![2]+D'l[S]■ i2=i2-eP■ t=t+(1<<i2)● Positions k=4then 3: ○ d=d[k];w[d]=w[d]+1 ○ eP=eP+D'l[w[d]] ○ S=0;loop from j=0 to d-1:S=S+w[j] ○ Test if S>0;if yes:■ el=D'l![(7-k)]+D'l[S]■ el=el-eP■ i2=el &(0×7)■ i3=el>>3■ t=t+pow[i3]*(1<<i2)● Positions k=2then 1: ○ d=d[k w[d]=w[d]+1 ○ eP=eP+D'l[w[d]] ○ S=0;loop from j=0 to d-1:S=S+w[j] ○ Test if S>0;if yes:■ el=D'l![7-k)]+D'l[S] ■ el=el-eP ■ i2=el &(0×7) ■ el=el>>3 ■ i3=el &(0×3) ■ el=el>>2 ■ i5=el &(0×3) ■ t=t+pow[4+i5]*pow[i3]*(1<<i2)● Position k=0: ○ d=d
;w[d]=w[d]+1 ○ eP=eP+D'l[w[d]] ○ S=0;loop from j=0 to d-1:S=S+w[j] ○ Test if S>0;if yes:■ el=D'l![(7)]+D'l[S]■ el=el-eP■ i2=el &(0×7)■ el=el>>3■ i3=el &(0×3)■ el=el>>2■ i5=el &(0×3)■ el=el>>2■ i7=el &(0×3)■ t=t+pow[8+i7]*pow[4+i5]*pow[i3]*(1<<i2) A-3 Initialization: ○ Loop from i=0 to 3,P[i]=Dl![4*w
+i] ○ Loop from d=1 to q-1: ■ Loop fromi=0 to 3,P[i]=P[i]+Dl![4*w[d]+i] Position processing ● Loop from k=0 to 7:○ Loop from i=0 to 3:R[i]=Dl![4*(7-k)+i]-P[i]○ l=0○ d=0○ Repeat while w[d]=0,d=d+1○ R
=R
+Dl[4*(7-k)]-Dl[4*w[d]]○ R[1]=R[1]+Dl[4*(7-k)+1]-Dl[4*w[d]+1]○ R[2]=R[2]+Dl[4*(7-k)+2]-Dl[4*w[d]+2]○ S=0○ Repeat while(t-l>0) ■ l'=1 ■ S=S+w[d] ■ i2=R
+Dl[4*S] ■ i3=R[1]+Dl[4*S+1] ■ i5=R[2]+Dl[4*S+2] ■ i7=R[3]+Dl[4*S+3] ■ l=pow7[i7]*pow5[i5]*pow3[i3]*(1<<i2) ■ d=d+1 ○ d=d-1 ○ l=l′ ○ t=t-l ○ Loop from i=0 to 3,P[i]=P[i]-Dl[4*w[d]+i] ○ w[d]=w[d]-1 ○ x[k]=a[d] B-1 D'l={0,0,1,16,2,128,17,512,3,32,129,2048,18,8192,513,144}; D'l!={0,0,1,17,19,147,164,676,679,711,840,2888,2906,11098,11611,11755}; Pow3[8]={1,3,9,27,81,243,729,2187} Pow[4*5]={1,5,25,125,625,1,7,49,343,0,1,11,121,0,0,1,13,169,0,0} B-2 Initialization: ● t=0 ● w[i]=0,0≤i<q ● eP=0 Position processing ● Position k=n-1: ○dn1=d[n-1];w[dn1]=1 ● Position k=n-2 ○ d=d[n-2];w[d]=w[d]+1 ○ If(d=dn1)then eP=1 ○ If(d>dn1)t=1 ● Positions from k=n-3 to 0: ○ d=d[k] ○ w[d]=w[d]+1 ○ eP=eP+D'l[w[d]] ○ S=0;loop from j=0 to d-1:S=S+w[j] ○ Test if S>0;if yes: ■ t′=1 ■ el=D'l![(7-k)]+D'l[S] ■ el=el-eP ■ Test if(el>0);if yes ● i2=el &(0×F) ● Pow
=1; ● ml=0 ● i3=(el>>4)& 0×7 ● if(i3>0)○ pow
=Pow3[i3] ○ ml=ml+1 ● el=el>>7 ● if el>0-ml′=(16-norm_s(el))>>1-loop from j=0 to ml′ ■ i=el & 0×3 ■ if i>0 ■ if i>0 ● pow[ml]=Pow[i+5*j] ● ml=ml+1 ■ el=el>>2 ●loop from i=0to(ml-1):t′=t′×pow[i] ●t′=t′<<i2 ■t=t+t′
權(quán)利要求
1.一種使用置換碼對(duì)數(shù)字信號(hào)進(jìn)行編碼/譯碼的方法,所述置換碼包括組合表示的計(jì)算,
其特征在于,所述組合表示由素因數(shù)冪分解來表示,并通過對(duì)所選整數(shù)的分解的、預(yù)先記錄的表示進(jìn)行存儲(chǔ)器讀取來確定。
2.如權(quán)利要求1所述的方法,其特征在于,所述預(yù)先記錄的表示包括表示用于每個(gè)所選整數(shù)的指數(shù)的值,所述值分別與表示連續(xù)素?cái)?shù)的值相關(guān)聯(lián)地存儲(chǔ)。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述組合表示包括整數(shù)(l)的階乘值(l!),并且所述預(yù)先記錄的表示至少包括階乘值(l!)的分解的表示。
4.如前述任意一項(xiàng)權(quán)利要求所述的方法,其特征在于,至少一個(gè)所述組合表示(t′)包括整數(shù)分子(v)除以整數(shù)分母(ρ)的商,并且所述商由素因數(shù)冪分解來表示,其中,每個(gè)冪均為分配給同一個(gè)素?cái)?shù)(pi)的、分別與所述分子(v)和所述分母(ρ)相關(guān)聯(lián)的指數(shù)的差(
)。
5.如前述任意一項(xiàng)權(quán)利要求所述的方法,其特征在于,所選整數(shù)的預(yù)先記錄的表示存儲(chǔ)在可尋址的存儲(chǔ)器中,并且所述存儲(chǔ)器的尋址提供待分配至各素?cái)?shù)的一連串指數(shù),以重構(gòu)所選整數(shù)。
6.如權(quán)利要求5所述的方法,其特征在于,所選整數(shù)的預(yù)先記錄的表示以一連串地址的方式存儲(chǔ),其中,用于每個(gè)素?cái)?shù)的地址均給出待分配至所述素?cái)?shù)的指數(shù),以重構(gòu)所述所選整數(shù)。
7.如權(quán)利要求1至4中的任意一項(xiàng)所述的方法,其特征在于,所述預(yù)先記錄的表示以包括一連串位組的字的形式存儲(chǔ),其中每個(gè)位組均具有:
-取決于素?cái)?shù)的權(quán),以及
-取決于將與所述素?cái)?shù)相關(guān)聯(lián)的指數(shù)的值。
8.如權(quán)利要求所述7的方法,其特征在于,通過將至少一個(gè)局部掩碼連續(xù)地應(yīng)用于位字,并通過根據(jù)位權(quán)的連續(xù)偏移和剩余位的讀取,而確定所述素因數(shù)的冪。
9.如權(quán)利要求2所述的方法,其特征在于,對(duì)于組合表示的計(jì)算,所述方法包括以下步驟:
-根據(jù)所選整數(shù)識(shí)別出現(xiàn)在形成所述組合表示(
)的乘積和/或商中的項(xiàng)((n-1-k)!,Sk,Pk);
-在存儲(chǔ)器中讀取包括在所述項(xiàng)的素因數(shù)分解中的指數(shù)(ei(n-1-k)!,eisk,eiPk);以及
-加上和/或減去所讀取的指數(shù)(ei(n-1-k)!+eiSk-eiPk),以確定包括在所述組合表示的素因數(shù)冪分解中的所述指數(shù)(
),并因此根據(jù)所述組合表示的素因數(shù)冪分解計(jì)算所述組合表示。
10.如權(quán)利要求2和9中的任意一項(xiàng)所述的方法,包括用于計(jì)算乘積的循環(huán)步驟,在每一循環(huán)上,所述乘積包括與在前一循環(huán)上確定的乘積相乘的項(xiàng),其特征在于:
-所述在前一循環(huán)上確定的乘積以素因數(shù)冪分解的形式保留在存儲(chǔ)器中;
-與所述在前一循環(huán)上確定的乘積相乘的所述項(xiàng)是其分解已被預(yù)先記錄的所選整數(shù)之一;以及
-為了在當(dāng)前循環(huán)上確定所述乘積,逐一地對(duì)于每個(gè)素?cái)?shù),將根據(jù)在所述前一循環(huán)上確定的乘積的分解和與所述乘積相乘的所述項(xiàng)的分解推導(dǎo)出的所述指數(shù)相加。
11.如權(quán)利要求2和9中的任意一項(xiàng)所述的方法,包括用于計(jì)算除法的循環(huán)步驟,在每一循環(huán)上,所述除法包括對(duì)在前一循環(huán)上確定的商進(jìn)行除法的項(xiàng),其特征在于:
-所述在前一循環(huán)上確定的商以素因數(shù)冪分解的形式保留在存儲(chǔ)器中;
-除所述商的所述項(xiàng)是其分解已被預(yù)先記錄的所選整數(shù)之一;以及
-為了在當(dāng)前循環(huán)上確定所述除法,逐一地對(duì)于每個(gè)素?cái)?shù),從所述在前一循環(huán)上確定的商推到出的指數(shù)中減去由所述項(xiàng)的分解推導(dǎo)的指數(shù)。
12.如前述任意一項(xiàng)權(quán)利要求所述的方法,其特征在于,所述置換碼包括計(jì)算表示置換的秩(t)的量,所述量包括部分秩(
)的累加,每一部分秩均對(duì)應(yīng)于所述組合表示之一。
13.如權(quán)利要求12所述的方法,其特征在于,當(dāng)對(duì)矢量量化的數(shù)字信號(hào)進(jìn)行編碼時(shí),使用了置換秩的計(jì)算(OP2),以對(duì)前導(dǎo)矢量的分量的置換進(jìn)行索引,所述置換已經(jīng)在先前的步驟(OP1)中執(zhí)行以確定最接近輸出矢量的碼矢量。
14.如權(quán)利要求12和13中的任意一項(xiàng)所述的方法,其特征在于,當(dāng)根據(jù)置換的秩(t)的給定值對(duì)矢量量化的數(shù)字信號(hào)進(jìn)行譯碼時(shí):
-根據(jù)待構(gòu)造的碼矢量的至少一個(gè)假定分量(dk),計(jì)算表示與所述給定值接近的置換秩的至少一個(gè)量(OP3);
-如果所述量滿足與所述秩的所述給定值的接近條件,那么所述假定分量(dk)的選擇便生效。
15.如權(quán)利要求14所述的方法,其特征在于,如果所述秩(t)的所述給定值能夠處于到與所述假定分量(dk)相關(guān)的部分秩的累積值與到與所述假定分量加一后對(duì)應(yīng)的分量(dk+1)相關(guān)的部分秩的累積值之間,則滿足所述接近條件。
16.如權(quán)利要求13至15中的任意一項(xiàng)所述的方法,其特征在于,所述編碼/譯碼的類型為具有矢量量化的信源編碼/譯碼。
17.如權(quán)利要求12所述的方法,其特征在于,所述編碼/譯碼的類型為信道調(diào)制編碼/譯碼,并且所述方法包括:
-在傳輸之前,根據(jù)置換的秩確定碼矢量(OP3);以及
-在接收時(shí),通過對(duì)應(yīng)于接收的矢量的碼矢量計(jì)算置換的秩(OP2)。
18.如權(quán)利要求12至17中的任意一項(xiàng)所述的方法,并結(jié)合權(quán)利要求3,其中,所述置換碼的最大維數(shù)為n,其特征在于,所述所選整數(shù)至少包括:
-1和所述最大維數(shù)n之間的整數(shù);
-整數(shù)0的階乘值;
-以及,優(yōu)選地,1和所述最大維數(shù)n之間的整數(shù)的階乘值。
19.如權(quán)利要求18所述的方法,其特征在于,所述所選整數(shù)還包括值0。
20.如權(quán)利要求12至19中的任意一項(xiàng)所述的方法,其特征在于,所述置換碼利用Schalkwijk列舉,并且與碼矢量(y0,...yn-1)的截?cái)?yk,...yn-1)相關(guān)的部分秩
表示為:
其中
-符號(hào)
表示從0到m的整數(shù)指數(shù)i的乘積,
-符號(hào)
表示從0到m的整數(shù)指數(shù)i的和;
-符號(hào)l!為整數(shù)l的階乘值,對(duì)于l>0,l!=1×2×3×...×(l-1)×l,并且0?。?,
-整數(shù)n為所述置換碼的維數(shù),其對(duì)應(yīng)于碼矢量包括的分量的總數(shù);
-0和n-1之間的整數(shù)k為所述碼矢量的第k個(gè)分量yk的索引;
-整數(shù)q為所述碼矢量包括的分量的數(shù)量;以及
-項(xiàng)wkd表示k和n-1之間的、其值等于同一索引分量d的索引分量的數(shù)量。
21.如權(quán)利要求20所述的方法,并結(jié)合權(quán)利要求9,其特征在于,將所述部分秩
形成組合表示的乘積和/或商中識(shí)別或出現(xiàn)的所述整數(shù)為:
-階乘項(xiàng)(n-1-k)!,對(duì)于0和n-1之間的所有整數(shù)k;
-包含在乘積中的每一項(xiàng)
的值和/或其階乘值,每一項(xiàng)
均在0和n之間;以及
-對(duì)于0和n-1之間的所有整數(shù)k的項(xiàng),每一項(xiàng)均在1和n-1之間。
22.如權(quán)利要求20和21中的任意一項(xiàng)所述的方法,并結(jié)合權(quán)利要求13,其特征在于,通過確定所述部分秩
的累加,在編碼時(shí)確定所述秩的計(jì)算,對(duì)于0和n-1之間的索引k,每一所述部分秩均根據(jù)碼矢量(y0,...yn-1)的截?cái)?yk,...yn-1)估計(jì)。
23.如權(quán)利要求22所述的方法,其特征在于,對(duì)所述項(xiàng)進(jìn)行測(cè)試,以避免在所述項(xiàng)Sk為零時(shí)估計(jì)所述部分秩
24.如權(quán)利要求20和21中的任意一項(xiàng)所述的方法,并結(jié)合權(quán)利要求14和15中的任意一項(xiàng),其特征在于,在譯碼時(shí)計(jì)算表示所述部分秩
的縮減的量,以確定索引k從0到n-1的、所述碼矢量的所述分量yk。
25.如權(quán)利要求22至24中的任意一項(xiàng)所述的方法,并結(jié)合權(quán)利要求10和11中的任意一項(xiàng),其特征在于,將用于前一索引k的所述項(xiàng)的分解中的指數(shù)的和暫時(shí)存儲(chǔ)在存儲(chǔ)器中,以加到用于當(dāng)前指索引k的項(xiàng)
的分解的指數(shù)中或者從中減去。
26.一種待存儲(chǔ)到利用置換碼對(duì)數(shù)字信號(hào)進(jìn)行編碼/譯碼的裝置的存儲(chǔ)器中的計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序包括用于實(shí)施如權(quán)利要求1至25中的任意一項(xiàng)所述方法的步驟的指令。
27.一種利用置換碼對(duì)數(shù)字信號(hào)進(jìn)行編碼/譯碼的裝置,其特征在于,所述裝置包括:
-存儲(chǔ)器單元,用于存儲(chǔ)如權(quán)利要求26所述的計(jì)算機(jī)程序的指令以及所選整數(shù)的分解的預(yù)先記錄的表示;以及
-計(jì)算模塊,其訪問所述存儲(chǔ)器單元以實(shí)施如權(quán)利要求1至25中的任意一項(xiàng)所述的方法。
全文摘要
本發(fā)明涉及數(shù)字信號(hào)的編碼/譯碼,尤其是利用包含組合表示的計(jì)算的置換碼。根據(jù)本發(fā)明,組合表示由素因數(shù)冪分解表示,通過對(duì)所選整數(shù)的分解的、預(yù)先記錄的表示進(jìn)行初步讀取而確定。
文檔編號(hào)H03M7/30GK101385245SQ200780005870
公開日2009年3月11日 申請(qǐng)日期2007年2月13日 優(yōu)先權(quán)日2006年2月17日
發(fā)明者史蒂芬·拉格特, 克勞德·拉姆博林 申請(qǐng)人:法國電信公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
乐都县| 福州市| 溆浦县| 伊通| 寿阳县| 宁安市| 中阳县| 东源县| 乐业县| 盐山县| 莆田市| 思南县| 钦州市| 磴口县| 图片| 长宁区| 镇原县| 若尔盖县| 永德县| 达拉特旗| 文昌市| 宁武县| 绵阳市| 噶尔县| 石楼县| 台南县| 万全县| 新邵县| 东源县| 宜兴市| 玛多县| 贞丰县| 密云县| 淅川县| 乌苏市| 搜索| 惠州市| 兴安县| 鸡东县| 南溪县| 新竹市|