国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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

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

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

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

      和值

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

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

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

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

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

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

      增1且通過重復d≠dk的其它值

      權(quán)

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

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

      (0≤k≤n-3)。
      *在譯碼時對權(quán)值進行測試 在最后位置上,對于某些d值,(對于

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

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

      表示為 其中 -符號

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

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

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

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

      的值和/或其階乘值,每一項

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

      的分解的指數(shù)中或者從中減去。
      通過閱讀下文的詳細描述和除了上述圖1A、圖1B、圖2和圖3以外的其它附圖,本發(fā)明的其它特性和優(yōu)點將會變得顯而易見的,其中 -圖4圖解說明了通過利用本發(fā)明的置換的秩的編碼/譯碼原理; -圖5圖解說明了根據(jù)第一實施方式用于通過利用本發(fā)明對置換的秩進行編碼的處理運算,其中,提出了用于計算中的項的素數(shù)冪分解的指數(shù)的展開(exploded)表示法; -圖6圖解說明了根據(jù)第二實施方式用于利用本發(fā)明對置換的秩進行編碼的處理運算,其中,提出了分解的指數(shù)的緊湊(compact)表示法; -圖7圖解說明了根據(jù)第一實施方式用于利用本發(fā)明對置換的秩進行譯碼的處理運算,其中,提出了分解的指數(shù)的展開表示法;以及 -圖8圖解說明了根據(jù)第二實施方式用于利用本發(fā)明對置換的秩進行譯碼的處理運算,其中,提出了分解的指數(shù)的緊湊表示法; -圖9用圖解法表示了實現(xiàn)本發(fā)明的編碼/譯碼裝置。
      作為提醒,尤其是參考4到圖8,應該強調(diào)的是 -術(shù)語“編碼”指計算置換的秩t(圖1A和圖1B中的運算OP2);以及 -術(shù)語“譯碼”指根據(jù)秩t確定置換(圖1A和圖1B中的運算OP3)。
      因此,這些運算將參照通過矢量量化進行的信源編碼/譯碼而指定。但是,應該記住的是,這些運算也可在信道編碼/譯碼中、在調(diào)制中進行。
      為了馬上說明本發(fā)明的原理,素數(shù)冪因式分解描述如下。
      對非零正整數(shù)K進行素數(shù)冪分解的表示如下 pi是第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,這是因為最大因數(shù)“5”的索引是3(p3=5)。因此,和 實踐中,由于數(shù)“1”是乘法的中性元,因此可將p0從分解式中去除,即 當然,K=0不能分解為素數(shù)冪。
      小于或等于16的正整數(shù)的素數(shù)冪乘積的分解由表3a給出,其階乘的分解由表3b給出。該分解包括六個素數(shù)(2,3,5,7,11和13)。由于表3a和表3b中的列由素數(shù)pi做索引且行由n做索引,因而,在數(shù)n和n!的素數(shù)冪乘積分解中,位于列pi和行n交叉處的單元格分別是素數(shù)pi的指數(shù)


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

      表3a正整數(shù)n(n<17)的素數(shù)冪分解

      表3bn!(n<17)的素數(shù)冪分解 接下來介紹接下來這種分解在計算置換碼的部分秩中的應用,首先介紹使用Schalkwijk公式的情況,然后介紹一般情況。
      應該記得,記為

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

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

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

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

      等于前兩項(

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

      以及(其中) 其中

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

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



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

      的最后的字。
      當然,還可以提供其它的變體。例如,一個變體在于,分離地存儲p1的指數(shù),并根據(jù)從p2的指數(shù)應用上述處理運算。
      *上限的確定 極限βi可以以多種方式確定。利用置換碼的信息(字母表的大小q,權(quán)wi,其中0≤i<q),可以明確地確定部分秩的分子的每一指數(shù)的最大值。如果使用多個置換碼(可能具有不同的維數(shù)),則優(yōu)選地對每一指數(shù)選擇這些最大值中的最大數(shù)。
      本發(fā)明有利地提出了一般處理運算,以在Schalkwijk列舉的上下文中確定該上限。除了最大維數(shù)之外,該處理運算不使用置換碼的其它先驗信息。其簡單地利用了以下關(guān)系 然后選擇 當使用多種的置換碼時,這種非常通用的處理尤其適合。
      表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對于維數(shù)為8和15的置換碼的分子的指數(shù)的上限
      表5b表示對于維數(shù)為8和15的置換碼的指數(shù)的位數(shù) 表6a和6b分別給出了維數(shù)n等于8和15的l和l!的指數(shù)的緊湊表示。
      表6a對于8維的置換碼的指數(shù)的緊湊表示 表6b對于15維的置換碼的指數(shù)的緊湊表示 作為純粹的說明性的示例,讓我們設(shè)法利用表6b來確定整數(shù)l=12的分解。
      優(yōu)選地,在表6b中,因為碼的最大維數(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)在Bl5=15位上的二進制表示為 000 0000 0001 0010,通過將與同一個素數(shù)相關(guān)聯(lián)的位分組在一起,其也表示為00 00 00 00 001 0010。
      4個最低位(權(quán)i=0至3)為素因數(shù)2的指數(shù),即,0010=2,這意味著待分配給素數(shù)2的指數(shù)為2。
      接下來的3位(權(quán)i=4至6)為素因數(shù)3的指數(shù),即,001=1,這意味著待分配給素數(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。
      該提取過程需要對將高位屏蔽以恢復包含在低位中的素因數(shù)的指數(shù),然后將恢復的位數(shù)的緊湊指數(shù)移位,以轉(zhuǎn)至下一個素因數(shù)的指數(shù)。
      因此,在15維中,具有6個待選取的指數(shù),開始于指數(shù)2。
      指數(shù)2二進制表示對應于18的4個最低位,即0 0 1 0,其對應于2。為了恢復它們,用15將18的高位屏蔽(記為18&15),15相當于 24-1=1111。
      得到的結(jié)果是e12=18 &(2<<4-1)=2,這意味著待分配至素數(shù)2的指數(shù)為2。
      然后將18右移4位,得到000 0000 0001=1 3的指數(shù)的二進制表示對應于1的3個最低位,即0 0 1(=1)。為了恢復它們,用7將1的高位屏蔽(表示為17 & 7,且值為23-1=111)。
      得到的結(jié)果是e112=1 &(2<<3-1)=1,這意味著待分配至素數(shù)3的指數(shù)為1。
      然后將1右移2位,因而給出000 0000=0,用于所有的其它高位。
      因此,如上所述,l=12的冪為 -對于素數(shù)2,為2,而 -對于素數(shù)3,為1, 即l=12=22×31 *分母的上限 此處假定對于每一素因數(shù),其在部分秩t′的分母中的指數(shù)小于或等于其在t′的分子中的指數(shù)。當t′是絕對負值時就是上述情況,這是因為因此 實際上,通過Schalkwijk公式,如果q>1,則值

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

      的最大值來計算
      下表7示出了對于n=16的情況。

      表7對于16維的置換碼計算分子βi和

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

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

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

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

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

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

      (或

      )的地址,指數(shù)

      (或

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

      (或

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

      (或

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

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

      (步驟C-31),且 -更新對于1≤i≤mn!,(步驟C-32)。
      因此,為了實施步驟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)系計算Sk。
      步驟C-5是對Sk的值的測試。如果Sk為零(Y箭頭),則意味著部分秩

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

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

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

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

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

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

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

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

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

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

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

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

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

      次, ○ 對于步驟C-6和步驟C-8的

      的相加,僅執(zhí)行

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

      次,且 ○ 步驟C-6

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

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

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

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

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

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

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

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

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

      個相加,或者甚至

      個相加,或者僅對于Sk的非零指數(shù)進行的

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

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

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

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

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

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



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



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

      的位“向右”移動

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

      得以抽取, -然后進行

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

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

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

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

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

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

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

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

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

      對于測試的每一個d值,對于每個指數(shù)而言,其它變體需要進行減和加但是,使用比率Rk的指數(shù)的變體僅需要進行加法(),這是因為對于給定的位置k,僅有和Sk及其指數(shù)

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

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

      然后,在步驟DC-10中,計算包含部分秩

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

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

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

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

      屏蔽

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

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

      右移

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

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

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

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

      中的部分秩

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

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

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


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



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

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

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

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

      包含用于整數(shù)l(0≤l≤15)的分解的字,且表

      包含用于其秩的分解的字。
      3的冪也被存儲于具有八個單元的表中(表示為Pow3),且5、7、11以及13的冪被存儲于具有二十個單元(具有用于未使用的冪的啞存儲)的表中(表示為Pow)。
      相應的處理被重新轉(zhuǎn)錄在附錄B-2中。
      當然,本發(fā)明并不局限于以上以示例方式描述的實施例,而是還包含其它的變形。
      對于申請人的知識,本發(fā)明包括置換碼中的素因數(shù)冪分解的第一使用。但是,如同在以置換碼進行的矢量量化中一樣,當提供組合的表示計算時,這種使用尤其有利。因此,一般地,本發(fā)明的目的在于,在用一個或多個置換碼進行的編碼/解碼中的、用于任何組合表示(即使不同于置換的秩)的素因數(shù)冪分解的這種使用。
      有利地,本發(fā)明能夠應用于語音信號的編碼/解碼中,例如在電話終端中,尤其是蜂窩式電話終端中。但是,本發(fā)明也應用于其它任意類型的信號(尤其是圖像或視頻信號)的編碼/解碼以及編碼調(diào)制。
      本發(fā)明的目的還在于使用置換碼的、設(shè)計以存儲于數(shù)字信號編碼/解碼裝置的存儲器中的計算機程序。因而,此程序包括用于執(zhí)行本發(fā)明意義上的方法的步驟的指令。特別是,以上描述的圖4至圖8能夠?qū)谶@種程序可包括的算法流程圖。
      本發(fā)明的目的還在于一種數(shù)字信號編碼/解碼裝置,參考圖9,所述數(shù)字信號編碼/解碼裝置使用置換碼并包括 -存儲單元MEM,其用于存儲前面提到的類型的計算機程序的指令,以及預先記錄的所選整數(shù)的分解的表示,以及 -計算模塊PROC,其訪問存儲單元MEM以執(zhí)行本發(fā)明意義上的方法。
      這些裝置MEM、PROC能夠被設(shè)計為 ● 根據(jù)所選的碼矢量y給出置換的秩t(圖9中的實線箭頭) ○ 在信源編碼器的索引模塊中,或者 ○ 在信道解碼器的索引模塊中, ● 或者根據(jù)置換的秩t給出待重構(gòu)的碼矢量y(圖9中的虛線箭頭) ○ 在信源解碼器的解碼模塊中,或者 ○ 在信道編碼器的編碼模塊中。
      當然,存儲器MEM中的預先記錄的表示可以是地址內(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=0 to d-1S=S+w[j] ○ Test if S>0;if yes ■ i2=R
      +Dl[4*S] ■ t=t+(1<<i2) ● Positions k=4 then 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-1S=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=2 then 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-1S=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=0 to d-1S=S+w[j] ○ Test if S>0;ifyes ■ 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′ll={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-1S=S+w[j]○ Testif S>0;if yes ■ i2=D′l![2]+D′l[S] ■ i2=i2-eP ■ t=t+(1<<i2) ● Positions k=4 then 3 ○ d=d[k];w[d]=w[d]+1 ○ eP=eP+D′l[w[d]] ○ S=0;loop from j=0 to d-1S=S+w[j] ○ Test if S>0;if yes ■ eI=D′l![(7-k)]+D′l[S] ■ eI=eI-eP ■ i2=eI &(0x7) ■ i3=eI>>3 ■ t=t+pow[i3]*(1<<i2) ● Positions k=2 then 1 ○ d=d[kw[d]=w[d]+1 ○ eP=eP+D′l[w[d]] ○ S=0;loop from j=0 to d-1S=S+w[j] ○ Test if S>0;if yes ■ eI=D′l![(7-k)]+D′l[S] ■ eI=eI-eP ■ i2=eI &(0x7) ■ eI=eI>>3 ■ i3=eI &(0x3) ■ eI=eI>>2 ■ i5=eI &(0x3) ■ 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;Ioop from j=0 to d-1S=S+w[j] ○ Test if S>0;if yes ■ eI=D′l![(7)]+D′l[S] ■ eI=eI-eP ■ i2=eI &(0x7) ■ eI=eI>>3 ■ i3=eI &(0x3) ■ eI=eI>>2 ■ i5=eI &(0x3) ■ eI=eI>>2 ■ i7=eI &(0x3) ■ 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 from i=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 3R[i]=D′l![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-/>0)■ l′=I■ 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=pow 7[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′ll={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-1S=S+w[j] ○ Test if S>0;if yes ■ t′=1 ■ eI=D′l![(7-k)]+D′l[S] ■ eI=eI-eP ■ Test if(eI>0);if yes ● i2=eI &(0 x F) ● Pow
      =1; ● ml=0 ● i3=(eI>>4)& 0x7 ● if(i3>0) ○ pow
      =Pow3[i3] ○ ml=ml+1 ● eI=eI>>7 ● if eI>0 - ml′=(16-norm_s(eI))>>1 - loop from j=0 to ml′ ■ i=eI & 0 x 3■ if i>0■ if i>0● pow[ml]=Pow[i+5*j]● ml=ml+1■ eI=eI>>2 ● loop from i=0 to(ml-1)t′=t′x pow[i] ● t′=t′<<i2 ■ t=t+t′
      權(quán)利要求
      1.一種使用置換碼對數(shù)字信號進行編碼/譯碼的方法,所述置換碼包括組合表示的計算,
      其中,所述組合表示由素因數(shù)冪分解來表示,并通過對所選整數(shù)的分解的、預先記錄的表示進行存儲器讀取來確定,
      并且,至少一個所述組合表示包括整數(shù)分子除以整數(shù)分母的商,并且所述商由素因數(shù)冪分解來表示,每個冪均為分配給同一個素數(shù)的、分別與所述分子和所述分母相關(guān)聯(lián)的指數(shù)的差。
      2.如權(quán)利要求1所述的方法,其中,對于組合表示的計算,所述方法包括以下步驟
      -根據(jù)所選整數(shù)識別出現(xiàn)在形成所述組合表示的乘積和/或商中的項;
      -在存儲器中讀取包括在所述項的素因數(shù)分解中的指數(shù);以及
      -加上和/或減去所讀取的指數(shù),以確定包括在所述組合表示的素因數(shù)冪分解中的所述指數(shù),并因此根據(jù)所述組合表示的素因數(shù)冪分解計算所述組合表示。
      3.如權(quán)利要求2所述的方法,包括用于計算乘積的循環(huán)步驟,在每一循環(huán)上,所述乘積包括與前一循環(huán)上確定的乘積相乘的項,以及其中
      -所述在前一循環(huán)上確定的乘積以素因數(shù)冪分解的形式保留在存儲器中;
      -與所述乘積相乘的所述項是其分解已被預先記錄的所選整數(shù)之一;以及
      -為了在當前循環(huán)上確定所述乘積,逐一地對于每個素數(shù),將根據(jù)在所述前一循環(huán)上確定的乘積的分解和與所述乘積相乘的所述項的分解推導出的所述指數(shù)相加。
      4.如權(quán)利要求2所述的方法,包括用于計算除法的循環(huán)步驟,在每一循環(huán)上,所述除法包括對在前一循環(huán)上確定的商進行除法的項,其中
      -所述在前一循環(huán)商確定的商以素因數(shù)冪分解的形式保留在存儲器中;
      -除所述商的所述項是其分解已被預先記錄的所選整數(shù)之一;以及
      -為了在當前循環(huán)商確定所述除法,逐一地對于每個素數(shù),從所述在前一循環(huán)商確定的商推導出的指數(shù)中減去由所選項的分解推導的指數(shù)。
      5.如權(quán)利要求1所述的方法,其中,所述置換碼包括計算表示置換的秩的量,所述量包括部分秩的累加,每一部分秩均對應于所述組合表示之一,
      其中,所述置換碼利用Schalkwijk列舉,并且與碼矢量(y0,...yn-1)的截斷(yk,...yn-1)相關(guān)的部分秩
      表示為
      其中
      -符號
      表示從0到m的整數(shù)指數(shù)i的乘積,
      -符號
      表示從0到m的整數(shù)指數(shù)i的和;
      -符號l!為整數(shù)l的階乘值,對于l>0,l?。?×2×3×...×(l-1)×l,并且0!=1,
      -整數(shù)n為所述置換碼的維數(shù),其對應于碼矢量包括的分量的總數(shù);
      -0和n-1之間的整數(shù)k為所述碼矢量的第k個分量yk的索引;
      -整數(shù)q為所述碼矢量包括的分量的數(shù)量;以及
      -項
      表示k和n-1之間的、其值等于同一索引分量d的索引分量的數(shù)量;
      并且,將所述部分秩
      形成組合表示的乘積和/或商中識別或出現(xiàn)的所述整數(shù)為
      -階乘項(n-1-k)!,對于0和n-1之間的所有整數(shù)k;
      -包含在乘積中的每一項
      的值和/或其階乘值,每一項
      均在0和n之間;以及
      -對于0和n-1之間的所有整數(shù)k的項每一項均在1和n-1之間。
      6.如權(quán)利要求5所述的方法,并結(jié)合權(quán)利要求3,其中,將用于前一索引k的項的分解中的指數(shù)的和暫時存儲在存儲器中,以加到用于當前索引k的項
      的分解的指數(shù)中或者從中減去
      7.一種待存儲到裝置的存儲器中的計算機程序,所述裝置利用置換碼對數(shù)字信號進行編碼/譯碼,所述計算機程序包括用于實施如權(quán)利要求1所述方法的步驟的指令。
      8.一種利用置換碼對數(shù)字信號進行編碼/譯碼的裝置,其特征在于,所述裝置包括
      -存儲器單元,用于存儲如權(quán)利要求7所述計算機程序的指令以及所選整數(shù)的分解的預先記錄的表示;以及
      -計算模塊,其訪問所述存儲器單元以實施如權(quán)利要求1所述方法。
      全文摘要
      本發(fā)明涉及數(shù)字信號的編碼/譯碼,尤其是利用包含組合表示的計算的置換碼。根據(jù)本發(fā)明,組合表示由素因數(shù)冪分解表示,通過對所選整數(shù)的分解的、預先記錄的表示進行初步讀取而確定。
      文檔編號H03M7/30GK101447791SQ20081016745
      公開日2009年6月3日 申請日期2007年2月13日 優(yōu)先權(quán)日2006年2月17日
      發(fā)明者史蒂芬·拉格特, 克勞德·拉姆博林 申請人:法國電信公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1