CN101385245A - 数字信号的改良编码/解码,尤其是用置换码进行矢量量化的编码/解码 - Google Patents

数字信号的改良编码/解码,尤其是用置换码进行矢量量化的编码/解码 Download PDF

Info

Publication number
CN101385245A
CN101385245A CNA2007800058706A CN200780005870A CN101385245A CN 101385245 A CN101385245 A CN 101385245A CN A2007800058706 A CNA2007800058706 A CN A2007800058706A CN 200780005870 A CN200780005870 A CN 200780005870A CN 101385245 A CN101385245 A CN 101385245A
Authority
CN
China
Prior art keywords
index
decomposition
order
expression
integer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007800058706A
Other languages
English (en)
Other versions
CN101385245B (zh
Inventor
史蒂芬·拉格特
克劳德·拉姆博林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orange SA
Original Assignee
France Telecom SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by France Telecom SA filed Critical France Telecom SA
Publication of CN101385245A publication Critical patent/CN101385245A/zh
Application granted granted Critical
Publication of CN101385245B publication Critical patent/CN101385245B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/26Pre-filtering or post-filtering
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3082Vector coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明涉及数字信号的编码/译码,尤其是利用包含组合表示的计算的置换码。根据本发明,组合表示由素因数幂分解表示,通过对所选整数的分解的、预先记录的表示进行初步读取而确定。

Description

数字信号的改良编码/解码,尤其是用置换码进行矢量量化的编码/解码
本发明涉及诸如音频、视频以及更为广泛的多媒体信号之类的数字信号的编码/解码,以用于其存储或传输。本发明特别提出了一种解决方案,所述解决方案用于解决由置换码的编码和解码引起的问题。
通常,本发明也应用于信源编码的同类:信道编码或“调制”。
根据本发明的数字信号的压缩编码/解码对于语音或音频信号频率编码器的变换系数的量化非常有用。
矢量量化
一种广泛应用的数字信号压缩解决方案为矢量量化。矢量量化通过选自有限集的相同维数的矢量来表征输入矢量。M级(或M个“码矢量”)的量化器为输入矢量集的非双射应用,通常是将实欧氏空间Rn或Rn的子集映射到具有M个分离的元素的、Rn的有限态子集Y中:Y={y0,y1,...yM-1}。
Y被称为复制字母表或“字典”甚或“目录”,它的码矢量元素被称为“码字”(或“输出点”或甚至是“表示(representative)”)。
用于量化器的每一维的比特率(或其“分辨率”)r可由关系式定义:
r = 1 n log 2 M
在矢量量化中,将n个样本的块作为n维矢量来处理。根据信源编码理论,当维数变得很大时,矢量量化的性能逼近信源失真比特率的极限。基于矢量量化器的最优性所必须的条件,矢量量化器字典可用统计学的方法如通用的劳埃德算法(GLA)设计。这样获得的统计学的矢量量化器不具有结构,从而使得它们的开发在计算和存储资源方面的成本非常昂贵,因为编码和存储二者的复杂性都是与n2nr成比例的。
参考图1A,三个主要的运算用到了矢量量化器:两个运算在编码中用到,一个运算在解码中用到。通过首先从字典中选择码矢量来对输入矢量进行编码(步骤COD)。选择的码矢量是与输入矢量最类似的码矢量(图1A中的运算OP1)。然后,确定(步骤IND)是将该码矢量的索引进行传输还是存储(图1A中的运算OP2)。在解码器中(步骤DEC),根据其索引确定该码矢量(图1A中的运算OP3)。
在调制中,以不同的顺序应用图1A中的三个运算OP1、OP2和OP3。图1B示出了调制/量化的二元性,规定了从索引到码矢量的转换(图1B的COD’步骤,其对应于图1A中的运算OP3)。然后,在通过受噪声影响的信道进行传输后,搜索与接收的矢量最接近的码矢量(图1B的DEC’步骤,其对应于图1A中的运算OP1)。最后,对码矢量索引的解码是第三步(图1B的IND’步骤,其对应于图1A中的运算OP2)。
根据维数、矢量和比特率,复杂性指数的增加限制了具有小的维数和/或低比特率的无结构的矢量量化器的实时应用。对于无结构的矢量量化器,对最近邻居的搜索(运算OP1)要求在字典所有的元素中进行穷举搜索,以选择与输入矢量之间的距离最小的字典元素。后两个运算(索引OP2和转换运算OP3)通常通过对表的简单阅读来执行。然而这对于寄存器空间是非常昂贵的。为了克服尺寸和维度的限制,研究了基本矢量量化器的几个变体。这些变体试图修补字典结构的缺乏并从而减少复杂性,但这是以质量为代价的。但是,性能/复杂性的平衡得到了提高,使得它能够提高分辨率的范围或维数,以便矢量量化器能够有效地应用。提出了许多结构的矢量量化器方案,特别是,实现了下面描述的“置换码”的矢量量化器。
置换码
在“置换码”矢量量化器中,码矢量是通过(按字母顺序)对第一码矢量的各分量进行置换而获得的,其中该第一码矢量称为“前导(leader)”(或“前导矢量”)。这些分量的值取自大小为q的字母表A={a0,a1,...,aq-1}(其中,当i≠j时,ai≠aj)。分量ai是实数(或整数)。权wi(其中i是0到q-1范围内的索引)是字母表中字母ai的重复次数。权wi是正整数,以使
Σ i = 0 q - 1 w i = n .
按照惯例,字母表的值满足a0>a1>...>aq-1。前导的n个分量从位置0到位置(n-1)以降序排列。因此,前导矢量y0是如下形式的n维矢量:
Figure A200780005870D00101
可以理解,可选择不同的分量次序,例如为a0<a1<...<aq-1
前导矢量被称为“带符号前导”,且置换码被认为是“属于类型I”。其它的码矢量通过对y0的分量进行置换而获得。置换的总次数M为:
M = n ! &Pi; i = 0 q - 1 w i ! - - - ( 2 )
还有另一类型的置换码(类型II)。其前导矢量具有如上相同的形式,但是其分量必须是正的(a0>a1>...>aq-1≥0)。通过为其它码矢量分配所有可能的标记组合,其它码矢量也通过对y0的分量进行置换而获得。置换的总次数M为:
M = 2 h n ! &Pi; i = 0 q - 1 w i ! - - - ( 3 )
其中,如果aq-1>0,则h=n,否则,h=n-wq-1
在该情况下,前导矢量也称为绝对前导。
“置换码”矢量量化器已被推广到置换码的组合(并集),且最近该置换码联合结构已经推广到可变维数和分辨率的矢量量化中(在该申请人的申请文件WO-04/00219中)。置换码不仅用于统计矢量量化,还在使用高度结构化字典的代数矢量量化中由点的规则排列或纠错码得到。置换码还用于调制中。
置换码结构的使用考虑到了最佳的和快速的最近邻域研究算法的发展(图1A中的运算OP1)。然而,码矢量的编索引(或编号)(图1A中的运算OP2)和反向译码运算(图1A中的运算OP3)比非结构化的矢量量化情况需要更多的计算。
有多种列举置换的方法。Schalkwijk算法是这些方法的其中之一:
“用于信源编码的算法(An algorithm for source coding)”,由Schalkwijk J.P.M发表在1972年5月的IEEE Trans.on InformationTheory的卷IT-18,N°3,第395-399页。
使用组合分析,这些技术能够为置换码的码矢量编索引(运算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相关联的矢量D=(d0,d1...,dn-1)的秩,从而使得当且仅当yk=ad时,dk的索引值为d。
例如,维数为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)相关联,其分量是字母表A的q个字母的简单索引。
y和D的秩是相同的,但是矢量D的定义减少了计算序列D的秩所需的运算,其中序列D的值包含在集{0,1,...,q-1}中(所包含的元素数目与字母表{a0,a1,...,aq-1}相同)。
由于矢量y和D各自分量的出现是相同的,所以它们的权是相同的。中间权
Figure A200780005870D00111
也被定义为与分量(yk,yk+1...,yn-1)的矢量的权,因此其对应于被截短为剩下位置k到n-1的矢量y。因而:
w k d = &Sigma; i = k n - 1 &delta; ( y i , a d ) = &Sigma; i = k n - 1 &delta; ( d i , d ) - - - ( 4 )
其中,δ(x,y)是Kronecker算子(如果x=y,则δ(x,y)=1,否则,δ(x,y)=0)。
( w 0 0 , w 0 1 , . . . , w 0 q - 1 ) = ( w 0 , w 1 , . . . , w q - 1 ) .
通过组合分析,矢量y的秩t可通过以下公式计算:
t = &Sigma; k = 0 n - 1 &Sigma; d = 0 d k - 1 ( n - 1 - k ) ! ( w k d - 1 ) ! &Pi; i &NotEqual; d i = 0 q - 1 ( w k i ! ) , 其中 &Sigma; d = 0 - 1 = 0 且(-1)!=∞      (5)
该公式能够简化如下:
t = &Sigma; k = 0 n - 1 ( n - 1 - k ) ! &Pi; i = 0 q - 1 ( w k i ! ) ( &Sigma; d = 0 d k - 1 w k d ) = &Sigma; k = 0 n - 1 I k d k - - - ( 6 )
经常使用的就是公式(6),因此本文采用此公式。在下文中,将
Figure A200780005870D0012162909QIETU
称为“次序k的部分秩(partial rank)”,其中:
I k d k = ( n - 1 - k ) ! &Pi; i = 0 q - 1 ( w k i ! ) ( &Sigma; d = 0 d k - 1 w k d ) - - - ( 7 )
对秩进行译码(运算OP3):根据其索引确定置换
对秩t进行译码需要获取与y相关联的矢量D=(d0,d1,...,dn-1)。一种连续搜索dk的方法描述如下。分量d0首先被确定,然后是分量d1,...到分量dn-1
*d0的确定:
通过利用包含不等式的公式找到d0:
( n - 1 ) ! &Pi; i = 0 q - 1 ( w 0 i ! ) ( &Sigma; d = 0 d 0 - 1 w 0 d ) &le; t < ( n - 1 ) ! &Pi; i = 0 q - 1 ( w 0 i ! ) ( &Sigma; d = 0 d 0 w 0 d ) - - - ( 8 )
对于d=0,...,q-1,项(n-1)!、t、
Figure A200780005870D00124
和值
Figure A200780005870D00125
都是已知的。为了得到d0的值,将d0=0用作开始点,且d0连续地增1直到满足公式(8)。通过将部分秩代入公式(8),值d0应使:
I 0 d 0 &le; t < I 0 d 0 + 1 , 其中, I 0 d 0 = ( n - 1 ) ! &Pi; i = 0 q - 1 ( w 0 i ! ) ( &Sigma; d = 0 d 0 - 1 w 0 d )
*d1的确定:
为了找到d1,利用如下关系式:
( n - 2 ) ! &Pi; i = 0 q - 1 ( w 1 i ! ) ( &Sigma; d = 0 d 1 - 1 w 1 d ) &le; t - I 0 d 0 < ( n - 2 ) ! &Pi; i = 0 q - 1 ( w 1 i ! ) ( &Sigma; d = 0 d 1 w 1 d ) - - - ( 9 )
对于d=0,...,q-1,值
Figure A200780005870D00129
能按如下方法根据
Figure A200780005870D001210
的值推导出:
-如果d=d0,则 w 1 d = w 0 d - 1 , 以及
-如果d≠d0,则 w 1 d = w 0 d (只要d不等于d0,则重复
Figure A200780005870D001213
)。
我们回到与确定分量d0相同的问题。为了找到d1的值,将d1=0用作开始点,且d1连续地增1直到满足不等式(9)( I 1 d 1 &le; ( t - I 0 d 0 ) < I 1 d 1 + 1 )。
*其它dk的确定
之后的dk的计算是从上述情况推导出来的。为了找到dk的值,将dk=0用作开始点,且dk连续地增1直到满足不等式 I k d k &le; ( t - &Sigma; k = 0 k - 1 I k d k ) < I k d k + 1 .
一旦矢量D=(d0,...,dn-1)被译码出,则通过简单的字母表变换从中推导出矢量y。
现有技术的状况和问题
置换码的编索引和反向运算都是复杂运算。利用的算法应用了组合分析。组合的编索引和反向运算需要阶乘乘积的除法。
除法的复杂性
尽管在集成电路和信号处理器上已取得了进步,但是除法仍然是复杂的运算。通常,一个16位的整数除以一个16位整数花费的时间比它们的乘法花费的时间多18倍。一个32位整数除以一个16位整数的除法的权是32,而它们的乘法的权是5。
变量的构造(framing)
除法的成本不是唯一的问题。变量构造是另一问题,如下面表1所示。
只有小于或等于8的整数的阶乘可用16位整字表示。对于大于12的数,用32位的整字都不能表示其阶乘。
而且,运算的复杂性还随着用于表示变量的位数的增多而增加。因而,用16位整数除32位整数的除法(权32)的复杂度几乎是用16位整数除16位整数的除法(权18)的复杂度的两倍。
 
n n! Log2(n!)
0 1 0
1 1 0
2 2 1
3 6 2.5849625
4 24 4.5849625
5 120 6.9068906
6 720 9.4918531
7 5040 12.299208
 
8 40320 15.299208
9 362880 18.469133
10 3628800 21.7910611
11 39916800 25.2504927
12 479001600 28.8354552
13 6227020800 32.535895
14 87178291200 36.3432499
15 1307674368000 40.2501405
16 20922789888000 44.2501405
表1:整数阶乘
用于减少运算OP1复杂度的解决方法已被提出。而运算OP2和运算OP3的复杂度的问题并未很好地解决。然而,值得注意的是,在本申请人的TDAC编码/译码器或3GPP-AMR-WB+译码器中,已基于Schalkwijk公式对编码和译码算法进行了简化。
置换列举的简化和反向运算(运算OP2和运算OP3)的简化
置换的秩t的计算和反向运算的速度通过如下描述的简化进行了改进,其中该简化是针对n项
Figure A200780005870D00141
的计算,其定义回顾如下:
I k d k = ( n - 1 - k ) ! &Pi; i = 0 q - 1 ( w k i ! ) ( &Sigma; d = 0 d k - 1 w k d ) , (0≤k≤n-1)
前两项用于减少编码和译码的复杂度。第三项用在编码中,且最后两项用在译码中。
编码技术如图2和图3所示。特别地,图3包括通过现有技术意义下的Schalkwijk公式计算秩,而图2图解说明了基本步骤(在图2中用“EP-n”指定第n个基本步骤)。
参考图2,处理过程由步骤EP-1开始,在该步骤中,恢复矢量y=(y0,...,yn-1)的分量。随后的步骤EP-2包括计算用于矢量A=(a0,...,aq-1)的字母表的元素并确定最大索引q。为此,在设置了q=1,a0=y0的初始化步骤EP-21之后,对1到n-1之间的索引k进行循环,以按如下方法搜索元素aq(在EP-26结束测试,否则在EP-27中递增):
-如果当前索引为k的分量yk不在元素{a0,...,aq-1}中(测试EP-22),那么,必须分配新的元素aq以使aq=yk加入到集{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进行结束测试,否则在EP-38中使k递增),在索引集(0,...,q-1)中找到值d,以使yk=ad(在循环中的EP-33对d进行测试,否则在EP-36中递增为d=d+1)。
参考图3,其描述了在图2说明的基本处理过程之后的用于计算秩t的步骤。图3中说明的步骤以“CA-n”来表示现有技术意义下的第n个编码步骤。
步骤CA-1将秩t初始化为0,将变量P初始化为1(在步骤CA-13中用作秩计算的分母),以及将q个权w0,...,wq-1初始化为0。
在此,将k的值从n-1递减到0(步骤CA-2用于将k初始化为n-1,在CA-14结束测试,否则在CA-15递减)。该选择的益处随后描述。然后使用在基本步骤EP-3中获得的、矢量D的分量dk,对于当前k,设置d=dk(步骤CA-3)。对相关的权wd进行更新(在步骤CA-4中,wd=wd+1)以估计项P(在步骤CA-5中,P=P×wd)。将在对应于步骤CA-13的秩的计算中用作分子的和S初始化为0(步骤CA-6),然后对权wi的索引i进行循环(在CA-9结束测试,否则在CA-10递减为d-1),以更新和S(在步骤CA-8中,S=S+wi)。在步骤CA-13计算秩t之前,进行检查以确保和S不为0(测试CA-11)。该实现的益处将在随后描述。
秩t的计算(步骤CA-13)包括阶乘项(n-k-1)!,该计算如下:
t=t+(S/P)(n-k-1)!
不在秩t每次更新时计算项(n-k-1)!,而是优选地,在存储器中预记录这些值,且使用简单的存储器存取(步骤CA-12)来获得(n-k-1)!的当前值。
因此,图3说明的处理过程的一些优点将被本发明的实现再次吸收。这些优点详细描述如下。
*阶乘的存储
为了避免实时计算项(n-k-1)!和!,对n+1个阶乘值(0!,1!,...,n!)进行预计算和存储。如果维数n的变化是有限的(n≤nmax),则对值0!,1!,...,nmax!进行预计算和存储。
*为了避免进行除法而在中间权累积时进行测试
如果项 S k = &Sigma; d = 0 d k - 1 w k d 为0,那么,计算
I k d k = ( n - 1 - k ) ! &Pi; i = 0 q - 1 ( w k i ! ) ( &Sigma; d = 0 d k - 1 w k d )
则是无意义的。现在,该项通常为零,尤其是在最后的位置上(k接近n-1)。通过增加对该项的零状态的测试(图3的测试CA-11),则可避免进行除法(和乘法)。由于除法的计算比测试复杂得多,因此在复杂性方面的节约是很有意义的。
*编码中位置的反向循环
通过将
Figure A200780005870D00164
增1且通过重复d≠dk的其它值
Figure A200780005870D00165
Figure A200780005870D00166
(其中d=0,1,..,q-1)可根据权
Figure A200780005870D00167
推导出来。然后,则能够创建循环(图3中的步骤CA-2、CA-14、CA-15),从矢量的最后位置(k=n-1)工作到第一位置(k=0)。在初始化为1之后,该“反向”循环能够以这样的方式计算项Pk:
P k = &Pi; i = 0 q - 1 ( w k i ! ) ,
其中,对于每次迭代只进行递增和乘法,或如下计算:
w k d k = w k + 1 d k + 1
以及 P k = w k d k &times; P k + 1 ( &Pi; i = 0 q - 1 ( w k i ! ) = w k d k &times; &Pi; i = 0 q - 1 ( w k + 1 i ! ) )
还可单独处理最后两个位置(k=n-1和k=n-2)。事实上,
●对于最后的位置(k=n-1), &Sigma; d = 0 d n - 1 - 1 w n - 1 d = 0 , 因此 I n - 1 d n - 1 = 0
●对于倒数第二的位置(k=n-2),
如果dn-2>dn-1,则
&Sigma; d = 0 d n - 2 - 1 w n - 2 d = 1 ,
P n - 2 = &Pi; i = 0 q - 1 ( w n - 1 i ! ) = 1 ! &CenterDot; 1 ! &CenterDot; &Pi; i = 0 q - 3 ( 0 ! ) = 1 ,
且(n-1-k)!=1!,
因此, I n - 2 d n - 2 = 1 ,
否则(dn-2≤dn-1), &Sigma; d = 0 d n - 2 - 1 w n - 2 d = 0 , 因此 I n - 2 d n - 2 = 0 ,
其中,如果dn-2=dn-1,则Pn-2=2,否则,Pn-2=1。
还可提供如下的其它有利的实现细节。
*消除译码中的除法
当搜索d0时,为了避免译码中的除法,不等式(8)能够以如下形式重新表示为:
( n - 1 ) ! &times; ( &Sigma; d = 0 d 0 - 1 w 0 d ) &le; t &times; &Pi; i = 0 q - 1 ( w 0 i ! ) < ( n - 1 ) ! &times; ( &Sigma; d = 0 d 0 w 0 d )
类似地,通过以如下形式重新表示不等式(9),也在搜索d1时消除除法:
( n - 2 ) ! &times; ( &Sigma; d = 0 d 1 - 1 w 1 d ) &le; ( t - I 0 d 0 ) &times; &Pi; i = 0 q - 1 ( w 1 i ! ) < ( n - 2 ) ! &times; ( &Sigma; d = 0 d 1 w 1 d )
或甚至
( n - 2 ) ! &times; ( &Sigma; d = 0 d 1 - 1 w 1 d ) &le; ( t - I 0 d 0 ) &times; &Pi; i = 0 q - 1 ( w 1 i ! ) < ( n - 2 ) ! &times; ( &Sigma; d = 0 d 1 w 1 d )
应该注意的是,虽然能够在搜索dk(0≤k≤n-1)时消除除法,但是仍然需要执行(n-1)次除法来计算
Figure A200780005870D00177
*在译码时对权值进行测试
在最后位置上,对于某些d值, w k d = 0 (对于
Figure A200780005870D00179
分量占据了位置k之前位置的d值)。因此,对于这些d值,计算不等式(8)和不等式(9)的各项是没有意义的。
现有技术的其它问题:变量的构造
变量的构造问题已经在本申请人的TDAC编码中解决了。
第一解决方法是将大于12的维数的运算处理与较小维数的运算处理区分开。对于小的维数(n<12),在32位的无符号整数上完成计算。对于较大的维数,则使用双精度浮点变量,其代价是将增加计算复杂性(浮点双精度运算比其整数精度等价的运算更昂贵)以及所需的存储器容量。
而且,如果将最大精度限制为无符号的32位整数(由定点处理器实现),大于12的整数阶乘则不能直接预存,且维数大于12的矢量必须被分开地编码。为了解决该问题,更完善的解决方法利用以2j×r的形式表示阶乘n!的尾数和指数的伪浮点表示法。该分解如下表2所示。将n!(n小于或等于16)的存储简化为存储最大精度为30位的r以及对应于简单位偏移的指数j。
 
n log2(n!) 2j r log2r
0 0 1 1 0
1 0 1 1 0
2 1.0000 2 1 0
3 2.5849625 2 3 1.5849625
4 4.5849625 8 3 1.5849625
5 6.9068906 8 15 3.9068906
6 9.4918531 16 45 5.4918531
7 12.299208 16 315 8.29920802
8 15.299208 128 315 8.29920802
9 18.469133 128 2835 11.469133
10 21.7910611 256 14175 13.7910611
11 25.2504927 256 155925 17.2504927
12 28.8354552 1024 467775 18.8354552
13 32.535895 1024 6081075 22.535895
14 36.3432499 2048 42567525 25.3432499
15 40.2501405 2048 638512875 29.2501405
16 44.2501405 32768 638512875 29.2501405
表2:阶乘的因数分解
因此,现有技术中的技术大多不能解决有限精度(尤其是定点)变量的构造问题。虽然TDAC编码的实现解决了构造问题,但其不能避免两个整数的昂贵除法。而且,对于高维数,中间计算(例如,部分秩的分子和分母)可接近饱和。在该情况下,上述的简化不能用在译码处理中,且需要还原为不等式(8)和不等式(9)的公式,因而再次引入了大量的除法。
不同于Schalkwijk技术的列举技术也遇到了相同的问题。假设列举技术也使用组合分析,其则必须计算阶乘的乘积及其除法。
本发明旨在改善这种情况。
为此,首先提出了一种使用置换码对数字信号进行编码/译码的方法,所述置换码包括组合表示的计算,其中所述组合表示由素因数幂分解来表示,并通过对所选整数的分解的、预先记录的表示进行存储器读取来确定。
因而本发明提供了对与置换码的索引及反运算都相关的问题的有效方案。该方案同时解决了变量的构造和除法的问题。
有效地,在有利的实施中,所述预先记录的表示包括表示用于每个所选整数的指数的值,所述值分别与表示连续素数的值相关联地存储。
现有技术中与变量构造相关的问题因而被解决。
对于利用阶乘项,变量构造问题就更加严重。
在有利的实施中,为了在组合表示包括阶乘值时利用所述组合表示,所述预先记录的表示至少包括阶乘值的分解的表示。
因而该实施可以去除变量构造的限制,因此将通常设定的限制推回为相关置换码的维数n。
根据另一有利的特征,所述组合表示中的至少一个包括整数分子除以整数分母的商,并且所述商由素因数的幂分解来表示,其中每个幂均为分配给同一个素数的、分别与所述分子和所述分母相关联的指数的差。
因而通过将该计算以简单的减法计算替代,解决了与现有技术中的除法计算相关的问题。
在第一实施方式中,提供了存储器,所述存储器进行寻址以检索上述所选整数之一的预先记录的分解。为此,将所选整数的预先记录的表示存储在可寻址的存储器中,所述存储器的寻址提供待分配至各素数的一连串指数,以重构所选整数。
优选地,所选整数的预先记录的表示以一连串地址的方式存储,其中,用于每个素数的地址均给出待分配至所述素数的指数,以重构所述所选整数。
根据第一实施方式的该实施将在下文中指定为“分解的展开表示”。
作为一种变体,在第二实施方式中,所述预先记录的表示以包括一连串位组的字的形式存储,其中每个位组均具有:
-取决于素数的权,以及
-取决于将与所述素数相关联的指数的值。
优选地,然后通过将至少一个局部掩码连续地应用于位字,并通过根据位权的连续偏移和剩余位的读取,而确定所述素因数的幂。
根据第二实施方式的该实施将在下文中指定为“分解的紧凑表示”。
对于组合表示的计算的相同方法通常可根据以下步骤实现:
-根据所选整数识别出现在形成所述组合表示的乘积和/或商中的项;
-在存储器中读取包括在所述项的素因数分解中的指数;以及
-加上和/或减去所读取的指数,以确定包括在所述组合表示的素因数幂分解中的所述指数,并因此根据所述组合表示的素因数幂分解计算所述组合表示。
关于乘积的计算(其将被循环执行并且在每一循环上均包括新的项),可有利地暂时存储用于前一循环的乘积计算的分解。因此,如果该方法包括用于计算乘积的循环步骤,在每一循环上,所述乘积包括与在前一循环上确定的乘积相乘的项,则:
-所述在前一循环上确定的乘积以素因数幂分解的形式保留在存储器中;
-与所述在前一循环上确定的乘积相乘的所述项是其分解已被预先记录的所选整数之一;以及
-为了在当前循环上确定所述乘积,逐一地对于每个素数,将根据在所述前一循环上确定的乘积的分解和与所述乘积相乘的所述项的分解推导出的所述指数相加。
类似地,如果所述方法包括用于计算除法的循环步骤,在每一循环上,所述除法包括对在前一循环上确定的商进行除法的项:
-所述在前一循环上确定的商以素因数幂分解的形式保留在存储器中;
-除所述商的所述项是其分解已被预先记录的所选整数之一;以及
-为了在当前循环上确定所述除法,逐一地对于每个素数,从所述在前一循环上确定的商推到出的指数中减去由所述项的分解推导的指数。
当前计算的乘积和/商的中间分解的所述暂时存储在确定循环的部分秩时尤其有利,所述循环的部分秩的累积表示置换秩。
因此,在本发明的有利实施中,所述置换码包括计算表示置换的秩的量,所述量包括部分秩的累积,因而每一部分秩均对应于所述组合表示中的一个。
当对矢量量化的数字信号进行编码时,可以使用置换秩的计算(OP2),以对前导矢量的分量的置换进行索引,所述置换已经在先前的步骤(OP1)中执行以确定最接近输出矢量的码矢量。
类似地,当对矢量量化的数字信号进行译码时,假定根据置换秩的给定值进行置换秩的估计:
-根据待构造的码矢量的至少一个假定分量(dk),计算表示与所述给定值接近的置换秩的至少一个量(OP3);
-如果所述量满足与所述秩的所述给定值的接近条件,那么所述假定分量(dk)的选择便生效。
在示例性的实施中,如果所述秩(t)的所述给定值能够处于到与所述假定分量(dk)相关的部分秩的累积值与到与所述假定分量加一后对应的分量(dk+1)相关的部分秩的累积值之间,则满足所述接近条件。
因此,在Schalkwijk列举的情况下,所述接近条件可与上述的不等式(8)的一般形式相对应。
因而,本发明可有利地适用于图1A中表示的具有矢量量化的信源编码/译码。
然而,所述编码/译码的类型也可以为图1B中表示的信道调制编码/译码,假定其包括:
-在传输之前,根据置换的秩确定码矢量(图1A和图1B中相同的OP3);以及
-在接收时,通过对应于接收的矢量的码矢量计算置换的秩(图1A和图1B中相同的OP2)。
部分秩的计算(在乘积或商中)包括这样的项,如将在下文中看到的一般规则,所述项保持小于或等于所述置换码具有最大维数n。因此,在有利的实施中,具有预先记录的分解的所述所选整数至少包括:
-1和所述最大维数n之间的整数;
-整数0的阶乘值;
-以及,优选地,1和所述最大维数n之间的整数的阶乘值。
在具体可选的实施中,所述所选整数也包括数值0。
因此,如果所述置换码利用Schalkwijk列举,则与码矢量(y0,...yn-1)的截断(yk,...yn-1)相关的部分秩
Figure A200780005870D00221
表示为:
I k d k = ( n - 1 - k ) ! &Pi; i = 0 q - 1 ( w k i ! ) ( &Sigma; d = 0 d k - 1 w k d ) , 其中
-符号表示从0到m的整数指数i的乘积,
-符号表示从0到m的整数指数i的和;
-符号l!为整数l的阶乘值,对于l>0,l!=1×2×3×...×(l-1)×l,并且0!=1,
-整数n为所述置换码的维数,其对应于码矢量包括的分量的总数;
-0和n-1之间的整数k为所述码矢量的第k个分量yk的指数,从信源编码/译码(或信道调制编码/译码)中的秩值推导或者对于其的置换待在信源编码/译码(或信道调制编码/译码)中索引;
-整数q为所述码矢量包括的分离分量的数量;以及
-项(称为中间权)表示k和n-1之间的、其值等于同一索引分量d的索引分量的数量。
在这种情况下,在乘积和/或商中,具有预先记录的分解的、然后待在所述部分秩
Figure A200780005870D00226
的表达式中识别的所述所选整数为:
-阶乘项(n-1-k)!,对于0和n-1之间的所有整数k;
-包含在乘积 P k = &Pi; i = 0 q - 1 ( w k i ! ) 中的每一项
Figure A200780005870D00228
的值和/或其阶乘值,每一项
Figure A200780005870D00229
均在0和n之间;以及
-对于0和n-1之间的所有整数k的项 S k = &Sigma; d = 0 d k - 1 w k d , 每一项均在1和n-1之间。
还是在Schalkwijk列举的情况下,中间分解的暂时存储有利地应用为:将用于前一索引k的所述项 P k = &Pi; i = 0 q - 1 ( w k i ! ) 的分解中的指数的和暂时存储在存储器中,以加到用于当前指索引k的
Figure A200780005870D00233
的分解的指数中或者从中减去。
通过阅读下文的详细描述和除了上述图1A、图1B、图2和图3以外的其它附图,本发明的其它特性和优点将会变得显而易见的,其中:
-图4图解说明了通过利用本发明的置换的秩的编码/译码原理;
-图5图解说明了根据第一实施方式用于通过利用本发明对置换的秩进行编码的处理运算,其中,提出了用于计算中的项的素数幂分解的指数的展开(exploded)表示法;
-图6图解说明了根据第二实施方式用于利用本发明对置换的秩进行编码的处理运算,其中,提出了分解的指数的紧凑(compact)表示法;
-图7图解说明了根据第一实施方式用于利用本发明对置换的秩进行译码的处理运算,其中,提出了分解的指数的展开表示法;以及
-图8图解说明了根据第二实施方式用于利用本发明对置换的秩进行译码的处理运算,其中,提出了分解的指数的紧凑表示法;
-图9用图解法表示了实现本发明的编码/译码装置。
作为提醒,尤其是参考4到图8,应该强调的是:
-术语“编码”指计算置换的秩t(图1A和图1B中的运算OP2);以及
-术语“译码”指根据秩t确定置换(图1A和图1B中的运算OP3)。
因此,这些运算将参照通过矢量量化进行的信源编码/译码而指定。但是,应该记住的是,这些运算也可在信道编码/译码中、在调制中进行。
为了马上说明本发明的原理,素数幂因式分解描述如下。
对非零正整数K进行素数幂分解的表示如下:
K = &Pi; i = 0 m K ( p i ) e K i
pi是第i个素数(p0=1,p1=2,p2=3,p3=5,p4=7,p5=11,p6=13,p7=17,等)。
在整数K的分解中,pi的指数记为
Figure A200780005870D00242
且mK表示K的分解中具有非零指数的最大素因数的索引。
例如,数K=120(或5!)表示为:
120=1*23*31*51,其中mk=3,这是因为最大因数“5”的索引是3(p3=5)。因此, e 5 ! 0 = 1 , e 5 ! 1 = 3 , e 5 ! 2 = 1 e 5 ! 3 = 1 .
实践中,由于数“1”是乘法的中性元,因此可将p0从分解式中去除,即:
K = &Pi; i = 0 m K ( p i ) e K i
当然,K=0不能分解为素数幂。
小于或等于16的正整数的素数幂乘积的分解由表3a给出,其阶乘的分解由表3b给出。该分解包括六个素数(2,3,5,7,11和13)。由于表3a和表3b中的列由素数pi做索引且行由n做索引,因而,在数n和n!的素数幂乘积分解中,位于列pi和行n交叉处的单元格分别是素数pi的指数
Figure A200780005870D00248
对于任何正整数n>1,n!的素因数的数mn!使得 p m n ! &le; n < p m n ! + 1 . 数mn!和mn分别显示在表3b的最后一列和表3a的倒数第二列。应该注意,mn≤mn!
如表3a所示,数n的分解的许多指数为零。在表3a的最后一列中,指出了n的分解中的非零指数的数m′n。n=0的分解的不存在(因此指数也不存在)通过“-”符号在表3a的行n=0中示出。
Figure A200780005870D00251
表3a:正整数n(n<17)的素数幂分解
Figure A200780005870D00252
Figure A200780005870D00261
表3b:n!(n<17)的素数幂分解
接下来介绍接下来这种分解在计算置换码的部分秩中的应用,首先介绍使用Schalkwijk公式的情况,然后介绍一般情况。
应该记得,记为
Figure A200780005870D00262
的部分秩由上文的关系式(7)给出:
I k d k = ( n - 1 - k ) ! &Pi; i = 0 q - 1 ( w k i ! ) ( &Sigma; d = 0 d k - 1 w k d ) - - - ( 7 ) ,
从而使得能对以下三项进行素数幂分解:
(n-1-k)!, P k = &Pi; i = 0 q - 1 w k i ! S k = &Sigma; d = 0 d k - 1 w k d .
根据(n-1-k)!、Pk和Sk的分解的指数,通过简单的加法和减法就可计算得到
Figure A200780005870D00266
的分解的指数。
实际上,分解中的素因数pi的指数
Figure A200780005870D00268
由(n-1-k)!、Sk和Pk三项的分解中pi的三个指数计算得到。指数
Figure A200780005870D00269
等于前两项(
Figure A200780005870D002610
的分子)的pi指数和减去最后一项(
Figure A200780005870D002611
的分母)的pi的指数。该观测形式化后表示为:
e I k d k i = e ( n - 1 - k ) ! i + e S k i - e P k i - - - ( 10 )
图4描述了可包括在本发明意义下、用于编码和译码的处理运算中的一般步骤(以“G-n”来表示第n个一般步骤)。
因而,参考图4,从当前索引k(步骤G-1)开始且通过将会在随后详细描述的一些中间步骤,首先应该记住,规定了查阅预先记录的表(在图4中示例性示出的步骤G-2中记为Dl和Dl!),以根据上文的关系式(10)来计算全局指数(步骤G-3),该指数在素因数幂形式的、中间秩
Figure A200780005870D00272
的分解中是具体的。然后,可能通过在素因数的索引i上进行循环,而由此推导出中间秩
Figure A200780005870D00273
的值(步骤G-4)。在该中间秩的计算之后则可更新该置换的总秩(步骤G-5):
-对于秩编码,使用 t = t + I k d k 类型的关系式,其中,索引k递减(步骤G-6);
-或者,对于秩译码,使用 t = t - I k d k 类型的关系式,其中,索引k递增(步骤G-7),如随后所见。
最后,在编码的步骤G-7中(或如图4的虚线所示在译码中)获得置换的秩t,在步骤G-8中,根据上述的不等式(8)、并通过上文中的关系式yk=ad根据矢量Y的分量将矢量D的分量dk推导出。
在一般情况下,并与Schalkwijk列举无关地,如果置换的部分秩t′(t′>0)以Nt′项vj(1≤j≤Nt′)为分子、并以Nt′项ρj(1≤j≤Dt′)为分母的形式表示为:
t &prime; = &Pi; j = 1 N t &prime; v j &Pi; j = 1 D t &prime; &rho; j ,
那么,部分秩t′的分解的指数
Figure A200780005870D00277
由中间分解确定,其中,该中间分解是Nt′个vj的分解和Dt′个ρj的分解,指数
Figure A200780005870D00278
表示为:
e t &prime; i = &Sigma; j = 1 N t &prime; e v j i - &Sigma; j = 1 D t &prime; e &rho; j i
素数因数分解还将在下文中用于部分秩t′的、整数商的乘积的公式。
也作为一般规则,如果 t &prime; = &Pi; j = 1 Q t &prime; v j &rho; j = &Pi; j = 1 Q t &prime; &tau; j , e t &prime; i = &Sigma; j = 1 N t &prime; e &tau; j i .
为了回到Schalkwijk列举的特殊情况、并然后根据部分秩
Figure A200780005870D002712
的分解对其进行计算,一旦该分解被确定之后,则如下执行。
遵循关系式 e t &prime; i = e I k d k i = e ( n - 1 - k ) ! i + e S k i - e P k i 的精神,通过乘以对应的幂简单地计算部分秩
Figure A200780005870D002714
I k d k = &Pi; i = 1 m I k d k ( p i ) e I k d k i
在此应该指出,项(n-1-k)!和Pk是严格正整数,但是项Sk可为零并因而是不可分解的。在该情况下,部分秩为零。如上文所述(图3中的步骤CA-11),然后项Sk的值进行测试(Sk=0?),以仅当Sk≠0时,才计算部分秩
Figure A200780005870D00283
更一般地,如果 e t &prime; i = &Sigma; j = 1 N t &prime; e v j i - &Sigma; j = 1 D t &prime; e &rho; j i , t &prime; = &Pi; i = 1 m t &prime; p i e t &prime; i = &Pi; i = 1 m t &prime; p i &Sigma; j = 1 N t &prime; e v j i - &Sigma; j = 1 D t &prime; e &rho; j i ,
以及如果 e t &prime; i = &Sigma; j = 1 Q t &prime; e &tau; j i , t &prime; = &Pi; i = 1 m t &prime; p i e t &prime; i = &Pi; i = 1 m t &prime; p i &Sigma; j = 1 Q t &prime; e &tau; j i (t′>0)
将要记住的是,组成部分秩的项的素因数因式分解使得能够通过用素因数幂的乘法代替除法来消除除法,特别地,通过用与这些素数相关的指数的简单加法和减法代替除法来消除除法。
因而,在本发明意义下,由有限数量的整数的基因数分解,其中该因数分解被存储在存储器中(下文称为“基本分解”),提出了如下步骤:
-在图4的步骤G-2的意义下,确定在置换的秩中出现的项(例如(n-1-k)!, P k = &Pi; i = 0 q - 1 w k i ! S k = &Sigma; d = 0 d k - 1 w k d )的素因数分解(下文称为“中间分解”);
-在图4的步骤G-3的意义下,根据这些中间分解,确定置换的部分秩
Figure A200780005870D002810
的素因数分解,值得注意的是,这种分解是通过计算包含在该部分秩的分解中的指数(例如,类型关系式 e I k d k i = e ( n - 1 - k ) ! i + e S k i - e P k i )而实现的;以及
-在图4的步骤G-4的意义下,根据部分秩
Figure A200780005870D002812
的分解(例如,使用类型关系式 I k d k = &Pi; i = 0 m I k d k ( p i ) e I k d k i ),对其进行计算。
当然,待存储的基本分解优选地是有利选择的目标。在优选的但非限制性的实现中,将根据相关置换码的最大维数(该最大维数记为n)选择将被存储的基本分解。因而,基本分解优选地为:
-整数l的阶乘(记为l!)的分解,其中,该整数l满足0≤l≤n;
-以及整数l自身的分解,其中,此时,1≤l≤n;
其中,将要记住,n是相关置换码的最大维数
然后,可通过数m识别基本分解,给定:
-将考虑的素因数的数量m
-m个素因数自身
-以及它们各自的指数
稍后将在在分解的所谓“展开(exploded)”表示的上下文中,参考表4a和表4b对其实现的实施例进行描述。应该指出的是随后描述的所谓“紧凑”表示由存储单字组成,其中,该单字的各位给出了分解所包含的所有指数。
然后,可定义基本分解的不同集,以及用于表示和存储这些基本分解的程序。
而且,选择用于确定中间分解的项和确定适当地确定这些中间分解的适当确定是下文将描述的有利实现的目标。部分秩的分解以及根据其分解计算部分秩也是下文将描述的有利实现的目标。
接着描述将被存储的基本分解的选择。
一般地,且独立于用于列举n维置换码的技术,置换的秩的计算使用整数l(0≤l≤n),且首先使用其阶乘l!(0≤l≤n)。在优选的实现中,基本分解是l!(0≤l≤n)阶乘分解和l(1≤l≤n)分解,其中,如上文所述,n是相关置换码的最大维数。因此,在该优选的实现中提出了(2n+1)个基本分解。
然而,其它实现也是可能的。
例如,仅需提供(n+1)次基本分解,即,0!和l(1≤l≤n)的基本分解。因而,如果l!(l>0)的分解对部分秩的计算是必要的,则其可在用于确定中间分解的步骤中,根据j(1≤j≤l)的l次基本分解和 e l ! i = &Sigma; j = 1 l e j i 计算得到。
相反地,只需要提供l!(0≤l≤n)的(n+1)次分解。如果l(l>0)的分解对部分秩的计算是必要的,则其可在用于确定中间分解的步骤中,根据l!和(l-1)!两个基本分解以及如下关系式中计算得到:
e l i = e l ! i - e ( l - 1 ) ! i
因此,将会理解,基本分解集的选择能有利地导致在最小化存储这些基本分解的表示所需存储器和最小化用于确定中间分解的步骤的复杂性之间得到平衡。
下面描述根据本发明的分解的表示。
如上所述,分解(无论是部分秩、中间分解或基本分解)由待考虑的素因数的数量m、该m个素因数及其各自的指数限定。下文提出了用于表示分解、并存储用于基本分解的数据不同的方案。
指数的展开表示
阶乘l!(0≤l≤n)的表示
包含在值l!的分解中的素因数的数量ml!随着数l的增大而增大。用于表示l!(0≤l≤n)的分解的第一方案在于,对于每个l值,存储数ml!以及pi的幂(1≤i≤ml!)的ml!个指数。将注意到l!的ml!个指数是非零的。
在更有利的变体中,基本分解集共享相同数量的mn!个素因数,且对于每一基本分解,均存储mn!个指数,l!的基本分解的索引大于ml!的指数为零。该方案可以通过提供对指数表的规则定址来利用该表。然而,这一实施需要相当大的存储容量。该表包括mn!×(n+1)个值,并且指数存储于该表的地址(mn!,l+(i-1))处,其中符号(x,y)表示该表中的x行、y列上的单元。当然,将会理解,也可以考虑其它的惯例。因而,不考虑具有m列N行并因此具有m×N个单元(或元素)的二维表,而可考虑具有m×N个单元的一维表,其中,位于二维表的地址(x,y)处的单元位于该一维表的地址m×x+y处。然后,将存储在二维表的地址(l,(i-1))处的指数
Figure A200780005870D0030152030QIETU
存储在一维表的地址(mn!×l+(i-1))处。例如,可将数0至8的阶乘分解的指数存储在包括36个单元的二维表中,该表由表3b的4列(列pi=2,3,5,7)和9行(行n=0,..8)组成。这些相同的指数可以存储在下文给出的具有36个单元的一维表Dl!中(附录A-11)。第一表的地址(x,y)处的单元与Dl!中的地址:4×x+y处的单元相等。
此外,可以规定存储ml!的(n+1)个值,以能够利用l!的基本分解来减少中间分解的计算。
*整数l(1≤l≤n)的表示
为了表示基本分解l(1≤l≤n),还可以提出几种方案。第一方案是对于每个值1,均存储数ml和l的pi的幂(1≤i≤ml)的ml个指数。在一种变体中,可以优选地存储和用于l!的指数(ml!或mn!个)同样多的指数。l和l!的基本分解因而共享相同的数m。
在另一变体中,可以利用这样的事实,即,l的分解的非零指数的数量m′l较小。例如,在表3a中很明显的是,数m′l最大为2(对于l≤16)。因此,可以只存储该数以及对应的值pi或索引i。然而,还有必要规定存储非零次幂的这些素因数的索引i,这是因为它们不再由表中的相应指数的地址隐含地识别。
*除了基本分解之外的分解的表示
中间分解的表示取决于基本分解的表示,中间分解的表示根据基本分解的表示而确定。类似地,部分秩的分解的表示取决于中间分解的表示,部分秩的分解的表示根据中间分解的表示而确定。
*基本分解的存储
典型地,可通过下文用于8维(n=8)的置换码的表4a至4d作为示例来说明四个可能的存储方案,其中考虑了四个(m8!=4)素数(2,3,5和7)。这些实施例可应用于3GPP AMR-WB+编码器(标准[3GPPTS26.273]和[3GPPTS26.304]))。该编码器使用代数矢量量化,其字典为8维Gosset阵列RE8的置换码的并集。
前三个方案(表4a-4c)以相同的方式表示并存储l!的基本分解。实际上,提供了对ml!和l!的pi的幂(1≤i≤ml!)的ml!个指数的存储。它们的区别在于l的基本分解的表示和存储。表4a示出了用于存储ml和l!的pi(1≤i≤ml!)的幂的ml!个指数的第一方案。表4b示出了用于存储l的pi(1≤i≤ml!)的幂的ml!个指数的第二方案。
Figure A200780005870D00311
Figure A200780005870D00321
表4a:用于存储l和l!的素数幂分解并用于8维(l从0至8)置换码的第一方案
Figure A200780005870D00322
表4b:用于存储l和l!的素数幂分解并用于8维(l从0至8)置换码的第二方案
下面的表4c示出了用于存储l!的pi的幂的非零指数的数量m′l、并用于存储其指数的相应索引i的第三方案。在所表示的表中,为了更为清楚,所示出的是素因数pi
Figure A200780005870D00323
Figure A200780005870D00331
表4c:用于存储l和l!的素数幂分解并用于8维(l从0至8)置换码的第三方案
在第四方案中(由下面的表4d示出),基本分解的集由数mn!表示,并且对于每一基本分解(l或l!),存储了mn!个指数。表4d是从上文给出的表3a和3b中四列(pi=2,3,5和7)和9行(n=0至8)中提取的。
Figure A200780005870D00332
表4d:用于存储l和l!的素数幂分解并用于8维(l从0至8)置换码的第四方案
在使用具有可变维数和分辨率的统计矢量量化的TDAC编码器中(最大维数为15),考虑了6个(m15!=6)素数:2,3,5,7,11和13。表3a和3b中的6列(pi=2,3,5,7,11和13)和16行(n=0 to 15)因而可表示第四方案的基本表示集的存储。
指数的紧凑表示
下面描述另一个有利的方案,其使存储最小化,并将基本分解的指数紧凑地表示在有限数量的字上。在该基本分解的表示的变体中,中间分解和部分秩的分解也被紧凑地表示。有利地,如下文将会看到的那样,该方法还使得确定这些分解的复杂性最小。
*分解的紧凑表示
对于每一素因数pi,都进行搜索以确定部分秩的分子中的、其指数的最大值的上限βi。该上限给定pi的指数的最大可能值,即βi+1。通过用
Figure A200780005870D00341
表示各位整数以用二进制形式表示值βi+1,我们得到:
以及 B n i = &Sigma; j = 1 i - 1 b n j (其中 B n 1 = 0 )
其中
Figure A200780005870D00345
表示刚好大于或等于x的整数
Figure A200780005870D00346
包含在部分秩t′中的项K的幂因子分解的指数可以由Bn位( B n = &Sigma; i = 1 m n ! b n i )的字eK紧凑地表示,该字eK为:
e K = &Sigma; i = 1 m n ! ( e K i < < B n i )
符号"<<B"表示左移B位。
应注意的是,如果数n较大,则Bn可大于用来表示整数的位数B0(16、32或40比特)。在这种情况下,包含在t′中的整数K的素因数分解的指数被表示为M个整字eK(m)的形式,0≤m<M(当然,M>1)。
有利地,这M个字可如下形成:
·eK(0)包括前i0个指数(从p1
Figure A200780005870D00349
的指数):
e K ( 0 ) = &Sigma; i = 1 i 0 e K i < < B n i , 其中 B n i 0 + 1 < B 0 &le; B n i 0 + 2
●eK(1)包括从
Figure A200780005870D003412
Figure A200780005870D003413
的指数:
e K ( 1 ) = &Sigma; i = i 0 + 1 i 1 e K i < < ( B n i - B n i 0 + 1 ) , 其中 ( B n i 1 + 1 - B n i 0 + 1 ) < B 0 &le; ( B n i 1 + 2 - B n i 0 + 1 )
●后一个关系式可推广与任何m,直到组成包括指数的最后的字。
当然,还可以提供其它的变体。例如,一个变体在于,分离地存储p1的指数,并根据从p2的指数应用上述处理运算。
*上限的确定
极限βi可以以多种方式确定。利用置换码的信息(字母表的大小q,权wi,其中0≤i<q),可以明确地确定部分秩的分子的每一指数的最大值。如果使用多个置换码(可能具有不同的维数),则优选地对每一指数选择这些最大值中的最大数。
本发明有利地提出了一般处理运算,以在Schalkwijk列举的上下文中确定该上限。除了最大维数之外,该处理运算不使用置换码的其它先验信息。其简单地利用了以下关系:
max 0 &le; k < n ( e ( n - 1 - k ) ! i + e S k i ) &le; max 0 &le; k < n ( e ( n - 1 - k ) ! i ) + max 1 &le; l < n ( e l i ) = e ( n - 1 ) ! i + max 1 &le; l < n ( e l i )
然后选择 &beta; i = e ( n - 1 ) ! i + max 1 &le; l < n ( e l i ) .
当使用多种的置换码时,这种非常通用的处理尤其适合。
表5a给出了用于维数为8和15的
Figure A200780005870D00353
的分子中的指数的最大值的上限。表5b给出了用于维数为8和15的这些指数的位数
Figure A200780005870D00354
及其和Bn(最后一列)。在8维中,素因数2的指数在3位上表示,其它素因数(3、5和7)的指数在2位上表示。在15维中,素因数2的指数在4位上表示,其它素因数(5、7、11和、13)的指数在2位上表示。
Figure A200780005870D00355
表5a:对于维数为8和15的置换码的分子的指数的上限
Figure A200780005870D00356
表5b:表示对于维数为8和15的置换码的指数的位数
表6a和6b分别给出了维数n等于8和15的l和l!的指数的紧凑表示。
 
l 0 1 2 3 4 5 6 7 8
 
el - 0 1 8 2 32 9 128 3
el! 0 0 1 9 11 43 52 180 183
表6a:对于8维的置换码的指数的紧凑表示
 
l 0 1 2 3 4 5 6 7
el - 0 1 16 2 128 17 512
el! 0 0 1 17 19 147 164 676
l 8 9 10 11 12 13 14 15
el 3 32 129 2048 18 8192 513 144
el! 679 711 840 2888 2906 11098 11611 11755
表6b:对于15维的置换码的指数的紧凑表示
作为纯粹的说明性的示例,让我们设法利用表6b来确定整数l=12的分解。
优选地,在表6b中,因为码的最大维数为n=15,因此“2”的指数在4位上表示,“3”的指数在3位上表示,而其它的素因数5、7、11和13在2位上表示。在该表中,在列l=12中,可以读出其紧凑指数e12=18。
根据下表的读数,18(=16+2)在B15=15位上的二进制表示为:
000 0000 0001 0010,通过将与同一个素数相关联的位分组在一起,其也表示为:00 00 00 00 001 0010。
 
i 15...7 6 5 4 3 2 1 0
2i ... 64 32 16 8 4 2 1
在二进制表示中,18表示为: 0...0 0 0 1 0 0 1 0
4个最低位(权i=0至3)为素因数2的指数,即,0010=2,这意味着待分配给素数2的指数为2。
接下来的3位(权i=4至6)为素因数3的指数,即,001=1,这意味着待分配给素数3的指数为1。
接下来的2位(权i=7至8)为素因数5的指数,即,00=0。
接下来的2位(权i=9至10)为素因数7的指数,即,00=0。
接下来的2位(权i=10至12)为素因数11的指数,即,00=0。
接下来的2位(权i=13至14)为素因数13的指数,即,00=0。
该提取过程需要对将高位屏蔽以恢复包含在低位中的素因数的指数,然后将恢复的位数的紧凑指数移位,以转至下一个素因数的指数。
因此,在15维中,具有6个待选取的指数,开始于指数2。
指数2二进制表示对应于18的4个最低位,即0 0 1 0,其对应于2。为了恢复它们,用15将18的高位屏蔽(记为18&15),15相当于:
24-1=1111。
得到的结果是e12=18&(2<<4-1)=2,这意味着待分配至素数2的指数为2。
然后将18右移4位,得到:000 0000 0001=1
3的指数的二进制表示对应于1的3个最低位,即0 0 1(=1)。为了恢复它们,用7将1的高位屏蔽(表示为17&7,且值为23-1=111)。
得到的结果是e1 12=1&(2<<3-1)=1,这意味着待分配至素数3的指数为1。
然后将1右移2位,因而给出:000 0000=0,用于所有的其它高位。
因此,如上所述,l=12的幂为:
-对于素数2,为2,而
-对于素数3,为1,
即l=12=22×31
*分母的上限
此处假定对于每一素因数,其在部分秩t′的分母中的指数小于或等于其在t′的分子中的指数。当t′是绝对负值时就是上述情况,这是因为 e t &prime; i = ( e ( Num ( t &prime; ) i - e Den ( t &prime; ) i ) &GreaterEqual; 0 , 因此 e ( Num ( t &prime; ) i &GreaterEqual; e Den ( t &prime; ) i .
实际上,通过Schalkwijk公式,如果q>1,则值为分母Pk的指数的最大值β′i的上限(如果q>1,Pk≤(n-1)!)。
因此,检查不等式 e ( n - 1 ) ! i < 2 b n i 就已足够,这已经由上述的确定βi的值的处理运算完成了。
在其它情况下,可明确地搜索β′i,并利用βi和β′i的最大值来计算
Figure A200780005870D00375
在q=1的情况下,将会理解,公知秩(t=0)的单个码字包括在置换码中,因此,利用先验执行秩计算和相应的反运算是无用的。然而,如果不期望分别处理该特例,那么仍可以规定通过βi
Figure A200780005870D00381
的最大值来计算下表7示出了对于n=16的情况。
Figure A200780005870D00383
表7:对于16维的置换码计算分子βi
Figure A200780005870D00384
的上限
接下来简单描述存储基本分解所需的存储容量。
独立于所选的用于表示基本分解的方案,将基本分解存储在表中,并可在秩编码和译码运算中对该表进行寻址。虽然0的分解是不可能的(并且不使用),但可优选地为0的分解存储“哑”指数(例如0s或1s),以简化该寻址计算。下表8总结了在这两种情况下(存储和不存储0的哑分解),用于五种方案的、存储与基本分解相关的数据所需的存储容量。
Figure A200780005870D00385
表8:存储基本分解所需的存储器
在第五方案中,考虑了位数
Figure A200780005870D00391
的存储(+mn!)。然而,实际上,如将在下面的实施方式中看到的那样,比从存储器中进行读取更优选的是,将其“硬连线”(将其值设定在计算程序中而不声明为变量)。因此,实际上,对其进行存储并没有意义。
表9给出了对于nmax=8和15,存储与五个方案的分解的指数相关的数据所需的存储器(对0进行哑存储)。
表9:对于8维和15维的置换码,存储基本分解所需的存储器
下面描述素因数幂的存储。
在基本分解之外,本发明使用素因数幂来根据部分秩的分解计算部分秩。可根据这些素因数的表来实时(“在线”)计算其幂。优选地,预计算并除2之外的素数的幂并将其存储,而仅对2的幂进行实时计算。下表10a给出了8维置换码所需的3、5和7的幂(如同在AMR-WB+编码器中使用的幂)。表10b给出了最大15维的置换码所需的3、5、7、11和13的幂(如同在TDAC编码器中使用的幂)。
Figure A200780005870D00393
表10a:用于8维的置换码的素因数幂
Figure A200780005870D00394
Figure A200780005870D00401
表10b:用于15维的置换码的素因数幂。此处的变量Npfp表示待存储的素因数幂的数量。
还是此处,对于每一素因数,可以只存储必要数量的幂。作为变体,如果优选地只具有可规律地寻址的幂的单个表,则可以规定对于每一素因数存储与所需的p2(p2=3)的幂的数量同样多的值。对于未使用的幂,当然可以利用例如1s或0s的哑值的存储。
下面描述用于利用本发明进行编码的、置换的秩的计算。
具有几种取决于所选的基本分解及其表示的集的变体。为了简便,下文中对可能的实施的说明仅限于用于基本分解集的优选实施方式的情况,其中,对阶乘l!和l进行分解。
下面首先说明对于每一基本分解具有mn!个指数的、指数的展开表示的方案,这是最一般的情况。然后描述指数的展开表示的变体。最后,描述基本分解的指数的紧凑表示的方案及其一些变体。将会明显看到,本发明极好地适用于对置换的秩进行编码的处理运算。
下面回顾Schalkwijk算法,作为列举处理的示例。
分解的指数的展开表示
令n为使用的置换码的最大维数,且mn!为包括在数n!中的素因数的数量。
下面描述利用分解的指数的展开表示进行编码的第一实施方式
根据第一实施方式的编码
此处,l和l!的基本分解的指数优选地根据上文的表4d中的“第四”方案存储,其中用于l=0的哑存储位于两个单维表中,该两个表分别表示为Dl和Dl!且具有mn!×(n+1)个单元。如上所述,也可以考虑具有mn!列和(n+1)行的二维表。规则存储的l(或l!)的指数(均存储在mn!个值上)、读取基本分解的指数的运算需要表Dl(或Dl!)中的地址计算。为了读取l!(或l)的分解的指数,有必要指向表Dl!(或Dl)的地址(l×mn!)处,并因而标定指数
Figure A200780005870D00411
(或
Figure A200780005870D00412
)的地址,指数
Figure A200780005870D00413
(或
Figure A200780005870D00414
)位于下一地址(l×mn!+1)处,更普遍地,指数
Figure A200780005870D00415
(或
Figure A200780005870D00416
)位于地址(l×mn!+i-1)处。如上所述,在二维表中,指数(或)位于地址((l;(i-1))处(列为(i-1)且行为l)。
应注意到的是,如果未规定对l=0哑存储,那么l(l>0)的n个基本分解的表Dl中的地址计算为:(l-1)×mn!
初始化
●将Pk的中间分解的mn!个指数初始化为零(其存储在具有mn!个单元且优选地在每一位置上进行更新的表P中,如将会参照下文中的步骤C-3看到的那样)。因而,指令如下:
○  P[i]=0,1≤i≤mn!
·将秩t和q个权也初始化为零(其存储在具有q个单元且将在每一位置上更新(下文中的步骤C-2)的表P中)。指令如下:
○  t=0
○  w[i]=0,0≤i<q
○  k=n-1
索引k的迭代
参见图5,进行n个位置上的迭代(通过变量k上的循环)。图5中的步骤C-n的符号中的字母“C”表示词“编码”。
在步骤C-1中,读取变量dk。在步骤C-2对表w的单元dk进行更新:w[dk]=w[dk]+1。
步骤C-3是对Pk(表P)的分解的指数的更新,其具体地通过:
-从地址mn!×w[dk]读取表Dl中的基本分解w[dk]的mn!个指数
Figure A200780005870D004110
(步骤C-31),且
-更新:对于1≤i≤mn! P [ i ] = P [ i ] + e w [ d k ] i (步骤C-32)。
因此,为了实施步骤C-31,表Dl中的基本分解w[dk]的第一指数(表示为
Figure A200780005870D004112
)位于地址mn!×w[dk]处,第二指数(表示为
Figure A200780005870D004113
)位于地址mn!×w[dk]+1处,等等。更普遍地,指数
Figure A200780005870D004114
将位于地址mn!×w[dk]+i-1处。
并行地,在步骤C-4中,根据普遍关系 S k = &Sigma; d = 0 d k - 1 w [ d ] 计算Sk
步骤C-5是对Sk的值的测试。如果Sk为零(Y箭头),则意味着部分秩
Figure A200780005870D00421
为零(上文中的式(7))且秩t未改变,那么,处理继续进行随后的步骤C-11。否则(N箭头,Sk≠0),该处理继续进行步骤C-6,其中在表Dl的地址mn!×Sk处的读取基本分解的mn!个指数
Figure A200780005870D00422
并行地,步骤C-7在于,在表Dl!的地址mn!×(n-1-k)处读取基本分解(n-1-k)!的mn!个指数
Figure A200780005870D00423
将注意的是,如果和Sk不为零(测试C-5的输出否),则执行步骤C-7,以避免在(任何情况下)部分秩
Figure A200780005870D00424
为零时对表Dl!进行不必要的读取。
在步骤C-8中,可以将表的不同读数的结果集合在一起,以根据以下关系式首先计算部分秩
Figure A200780005870D00425
的分解的mn!个指数:
e I k d k i = e ( n - 1 - k ) ! i + e S k i - P [ i ] , 对于1≤i≤mn!
最后,在步骤C-9中,通过下式计算部分秩
Figure A200780005870D00427
本身:
I k d k = &Pi; i = 1 m n ! ( p i ) e I k d k i
如上所述,项w[dk]是必须小于或等于相关置换码的最大维数n的权。类似地,该权的和Sk仍小于最大维数n,并当然对于(n-1-k)同样适用。w[dk]、Sk和(n-1-k)!的分解实际上已在范围高达最大维数n的整数或整数阶乘的分解的表中列出,如表4d。根据表中列出的分解w[dk]以及在前述循环(k-1)上确定且保存在存储器中的Pk-1的分解,Pk的分解被确定。
作为图5的部分秩计算步骤的纯粹说明性的示例,考虑维数n=8且q=4的置换码。在该示例中,指数被存储在具有4列和9行并因而包括36个单元的二维表中。因此,其可以从上文中给出的表4d中提取,其中列pi=2,3,5,7且行l=0,...,8。
在该示例中,假定在前述的位置k=3处,权w的表为{1,1,0,3}且因而P3=1!1 0!3!=6。因此,P3(=21×31 x 50×70)的分解的指数的表P为{1,1,0,0}。
在位置k=2上,对于步骤C-1,假定d2=2已经被读取。
在该示例中,在步骤C-2中,通过将单元w[2]加1(w[2]=0+1=1)而将其更新。
在步骤C-31中,读取1(=w[2])的分解的四个指数,即,0,0,0,0(参见表4d,第6至第9列和l=1的第3行)。
然后(步骤C-32),表P被更新,因此得到P={1,1,0,0}。
在步骤C-4中,计算Sk:Sk=w[0]+w[1]=1+1=2。因此,Sk不为零(测试C-5)。
○读取Sk的分解的四个指数(步骤C-6)(仍参见表4d,第6至第9列,但l=2的第4行):对于p1=2(第6列),指数为1,对于pi=3,5,7(第7至第9列),指数为零。
○仍参见表4d,读取5!(对应于(n-1-k)!)的分解的四个指数(步骤C-7),但是此时是在第2至第5列的l=5的第7行。对于p1=2(第2列),指数为3。对于p2=3(第3列),指数为1,对于p3=5(第4列),指数也为1。另一方面,对于p4=7(第5列),指数为零。
○在步骤C-8中,计算部分秩
Figure A200780005870D00431
的分解的四个指数:
○对于p1=2, e I k d k 1 = e ( n - 1 - k ) ! 1 + e S k 1 - P [ 1 ] = 3 + 1 - 1 = 3
○对于p2=3, e I k d k 2 = e ( n - 1 - k ) ! 2 + e S k 2 - P [ 2 ] = 1 + 0 - 1 = 0
○对于p3=5, e I k d k 3 = e ( n - 1 - k ) ! 3 + e S k 3 - P [ 3 ] = 1 + 0 - 0 = 1
○对于p4=7, e I k d k 4 = e ( n - 1 - k ) ! 4 + e S k 4 - P [ 4 ] = 0 + 0 - 0 = 0
在步骤C-9中,根据分解的指数计算部分秩
Figure A200780005870D00436
:23×30×51×70=40。
再次参见图5,在步骤C-10中,通过根据关系 t = t + I k d k 进行更新(加上在步骤C-9中得到的部分秩
Figure A200780005870D00438
)而确定置换的总秩t。
然后,步骤C-11旨在递减变量k(k=k-1),且步骤C-12是对k值的测试,以确定是否继续处理。因此,如果k≥0(测试C-12输出“是”),处理运算的步骤则从第一步骤C-1开始重复,其中将k的值减去一个单位。否则(测试C-12输出“否”),该处理则终止在结束步骤C-13中(“结束”)。
因此,将会理解,上述步骤C-9根据在步骤C-8中确定的部分秩的分解计算部分秩,部分秩的分解根据三个中间分解确定:
-(n-1-k)!
-Sk,以及
-Pk
在步骤C-6和C-7中执行的其中两个((n-1-k)!和Sk)的确定包括在基本分解的各表Dl和Dl!中的简单读取。第三中间分解(Pk的分解)的确定也可以简单地根据在表Dl!中读取的、w[d]!的q个基本分解而按照以下关系式执行:
P [ i ] = &Sigma; d = 0 q - 1 e w [ d ] ! i , 1≤i≤mn!
直接变体
步骤C-3表示了确定该中间分解的更为有利的变体。实际上,Pk的中间分解可根据在表Dl!中读取的基本分解和被计算用于另一部分秩
Figure A200780005870D00442
的另一中间分解(Pk+1的中间分解)(例如k的迭代中的在先的部分秩
Figure A200780005870D00443
)而确定。更普遍地,在本发明的变体中,中间分解也可以根据用于至少一个其它部分秩的先前确定的至少一个中间分解而推出。
在上文中,秩的计算通过从最后位置(k=n-1)到第一位置(k=0)的循环来执行。然而,本发明当然也适用于从第一位置到最后位置的循环。所有需要的是改变初始化相位并调整步骤C-2和C-3及其次序。为此,权w的表可以用q个权
Figure A200780005870D00444
进行初始化。然后,对于从0到q-1的d,在表Dl!中读取w[d]!的分解的mn!个指数,以通过累加中间分解的表的mn!个值(P0的分解的指数)来进行计算。
然后,在步骤C-10之后且在步骤C-2之前进行步骤C-3。通过从P[i]中减去w[dk]的基本分解的指数
Figure A200780005870D00445
( P [ i ] = P [ i ] - e w [ d k ] i , 对于1≤i≤mn!)而对P的中间分解进行更新。然后,通过将w[dk]的值递减1(w[dk]=w[dk]-1)而进行步骤C-2。步骤C-11可以标定为将变量k递增1,而步骤C-12简单地测试是否k=n。
应简要地注意,对于具有可变维数n的置换码,比执行个运算更优选的是,在初始化之后读取mn!以仅执行mn!次运算。
第一实施方式的一般变体
更普遍地,在图5中示出的用于根据本发明的编码的实施允许多个变体。
因此,在第一变体中,(l或l!的)每一基本分解还包含数ml!。数ml!(0≤l≤n)的读取提供了有利条件。实际上,步骤C-3以及C-6至C-10不再均执行mn!次,而是:
○对于步骤C-3,仅执行
Figure A200780005870D00448
次,
○对于步骤C-6和步骤C-8的
Figure A200780005870D00449
的相加,仅执行
Figure A200780005870D004410
次,并且
○对于步骤C-7和C-9以及步骤C-8的 e I k d k i = e ( n - 1 - k ) ! i + e S k i - P [ i ] 的相减,仅执行m(n-1-k)!次。
此外,如果已存储了值ml,那么仅需执行:
○步骤C-3
Figure A200780005870D00452
次,且
○步骤C-6
Figure A200780005870D00453
次以及步骤C-8的相加。
在编码的另一变体中,如果如果除此之外还根据第三方案(上文的表4c)使用了l的基本分解的指数的存储,则可对
Figure A200780005870D00454
个值执行步骤C-3。类似地,对
Figure A200780005870D00455
个值执行步骤C-6。在步骤C-8中,不提供m(n-1-k)!个相加和m(n-1-k)!个相减,而是将待执行的相减的数量保持为m(n-1-k)!但是仅需要
Figure A200780005870D00456
个相加。具体地:
e I k d k i = e ( n - 1 - k ) ! i - e P k i , 对于1≤i≤m(n-1-k)!
■且 e I k d k i ( j ) = e I k d k i ( j ) + e S k i ( j ) ,对于 1 &le; j &le; m &prime; S k
在第三变体中,不将部分秩分解为三项(分子中两项,分母中一项),而是将其分解为两项,其中之一为商。因此,部分秩被分解为两项:
-和Sk
-商 R k = ( n - 1 - k ) ! &Pi; i = 0 q - 1 ( w k i ! ) .
该商可以由下列关系更新:
R k = ( n - 1 - k ) ) ! &Pi; i = 0 q - 1 ( w k i ! ) = ( n - 1 - ( k + 1 ) ) ! &times; ( n - 1 - k ) &Pi; i = 0 q - 1 ( w k + 1 i ! ) &times; w k d k = R k + 1 &times; ( n - 1 - k ) w k d k
因此,不根据q+1个基本分解(在表Dl!中读取的(n-1-k)!的分解以及q个w[dk]!的分解)确定Rk的分解,而是更优选地根据Rk+1的中间分解以及(n-1-k)的和w[dk](这两个基本分解是在表Dl中读取的)的基本分解确定Rk的中间分解,其表示为: e R k i = e R k + 1 i + e n - 1 - k i - e w k d k i .
与前述变体相比,不用确定和存储
Figure A200780005870D0045170228QIETU
的分子的中间分解(表P),而是确定商Rk的中间分解然后将其存储(为此目的提供表R)。将表P初始化为零替代为将该比率的指数的表R初始化为零。步骤C-3变为用于更新表R的简单步骤(通过读取(n-1-k)和w[dk]的基本分解的指数),该步骤表示为:
R [ i ] = R [ i ] + e n - 1 - k i - e w k d k i
根据存储选项,该更新可以通过进行mn!个相加和相减或m(n-1-k)!个相加(或者
Figure A200780005870D00462
个相减),或者甚至m(n-1-k)个相加(或者
Figure A200780005870D00463
个相减),或者仅对于w[dk]和(n-1-k)的非零指数进行m′(n-1-k)个相加和
Figure A200780005870D00464
个相减而实现。步骤C-8则仅包括以下类型的相加:
e I k d k i = R [ i ] + e S k i
根据存储选项,然后计算mn!个相加或
Figure A200780005870D00466
个相加,或者甚至
Figure A200780005870D00467
个相加,或者仅对于Sk的非零指数进行的
Figure A200780005870D00468
个相加。
将要注意的是,比率Rk不必是整数,这意味着指数R[i]可以是负数。在该变体中,编码中的阶乘的分解(因此为表Dl!)不再有用,从而可通过仅存储表Dl来使用整数l(l≤n)的(n+1)个基本分解的简单集。
分解的指数的紧凑表示
现在基于分解的指数紧凑表示对编码的第二实施方式进行描述。
如上文中参照第一实施方式所述,将基本分解的指数紧凑地表示,而不再以展开形式表示。出于简洁的目的,只说明指数的紧凑表示包含在单字中的情况。因此,将这些字如上述地储存,且在分别表示为D′l和D′l!的两个具有(n+1)个单元的表中存储l=0的哑字。包含基本分解的指数的字的两个表中的地址计算是直接的,因为为了读取l!(或l)的分解的字,所需要的仅是指向表D′l!(或D′l)的地址l。
要注意的是,在没有存储用于l=0的哑字的情况下,对应于基本分解l(l>0)的字位于表D′l的地址(l-1)上。
根据第二实施方式的编码
初始化
●将包含Pk的中间分解的mn!个指数的紧凑表示的字eP初始化为零:
eP=0
字eP会在每一个位置更新(下面的步骤CC-3)。
●如前所述,将存储在具有q个单元的表w中的秩t和q个权也初始化为值零。相应的指令是:
○ t=0
○ w[i]=0,0≤i<q
○ k=n-1
在n个位置上的迭代(对k进行循环)
现在参考图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]的分解的指数的紧凑表示的字
Figure A200780005870D00471
然后,
-在步骤CC-32中,更新字: e P = e P + e w [ d k ] .
同时,在步骤CC-4中,计算和Sk S k = &Sigma; d = 0 d k - 1 w [ d ] 。后续步骤CC-5是对Sk的值的测试。如果和Sk是零(箭头“否”),索引k则直接减一。否则(在测试步骤CC-5输出箭头“是”),程序则继续到步骤CC-6中,读取表D′l中的包含Sk的分解的指数的紧凑表示的字
同时(并且有利地依据测试步骤CC-5的结果),在步骤CC-7中,在表D′l!中读取包含(n-1-k)!的指数的紧凑表示的字e(n-1-k)!
在步骤CC-8中,将从步骤CC-3、CC-6、CC-7获得的结果汇总在一起,以通过两个简单的运算(优选地在加运算后进行减运算),计算包含部分秩
Figure A200780005870D00475
的指数的紧凑表示的字
Figure A200780005870D00476
e I k d k = e ( n - 1 - k ) ! + e S k , 然后, e I k d k = e I k d k - e P .
步骤CC-9的目的是通过如前所述的对字的位进行适当的移位来抽取部分秩的分解的mn!个指数为此,提供对从1到mn!的索引i的循环(将i在步骤CC-91初始化为1,在步骤CC-93测试i值,在步骤CC-94将i递增直到其达到mn!的值)。这样,则已在如下类型的指令步骤CC-92应用i的每一个循环:
i′1)
Figure A200780005870D004711
i′2) e I k d k = e I k d k > > b n i
符号“<<b”和“>>b”分别表示b位的左移位和右移位。另外,符号“&”表示按位进行的“与”逻辑运算符。指令i′1)包括恢复
Figure A200780005870D00481
个低位。实际上,对应于指令 ( ( 1 < < b n i ) - 1 ) 的掩码是硬连线设置的。
换句话说,高位的掩码 ( ( 1 < < b n 1 ) - 1 ) 应用于开始时(循环索引等于1时),这样可以首先仅恢复
Figure A200780005870D00486
个低位,从而给出与第一素因数p1相关的指数
Figure A200780005870D00487
于是:
-将
Figure A200780005870D00488
的位“向右”移动
Figure A200780005870D00489
位,以恢复最高序位并给出与高位的下一个素因数p2(掩码 ( ( 1 < < b n 2 ) - 1 ) )相关的指数,
-然后指数
Figure A200780005870D004811
得以抽取,
-然后进行
Figure A200780005870D004812
位的右移,
依此继续,直到i=mn!
接下来的步骤CC-10包括如下计算部分秩
Figure A200780005870D004813
I k d k = &Pi; i = 1 m n ! ( p i ) e I k d k i .
然后,将部分
Figure A200780005870D004815
加到总秩t上(在步骤CC-11中, t = t + I k d k )。
在下一步骤CC-12中,将索引k的值递减(k=k-1),并且该递减是在用递减后的值重新开始步骤CC-4、CC-1、CC-7以及后续步骤之前进行。在测试步骤CC-13中进行检查以确定k的值是否还未达到-1,如果达到了-1(k<0),则程序终止(步骤CC-14)。
所以,不考虑分解的表示,本发明就可有效地计算部分秩。步骤CC-10的目的是根据在之前的步骤CC-8和CC-9中确定的部分秩的分解计算部分秩。使用了三个中间分解((n-1-k)!、Sk和Pk的分解)。在步骤CC-6和CC-7中执行的其中两个((n-1-k)!和Sk)的确定在于,在表D′l!和D′l中简单地读取其紧凑表示。在步骤CC-3中执行的第三中间分解(Pk)的确定也需要对表D′l进行读取,然后通过加上已读取的基本分解的紧凑表示来更新该中间分解的紧凑表示。
根据前述的第一实施方式,值ml!(0≤l≤n)的存储可降低步骤CC-9和CC-10的复杂性。抽取部分秩
Figure A200780005870D004817
的分解的指数的循环执行m(n-1-k)!次而不是mn!次。类似地,步骤CC-10不再包含mn!次乘法,而是包含m(n-1-k)!次乘法。
现在说明采用本发明进行的置换的秩的解码。
这里,依据基本分解的表示(展开的或紧凑的)的技术方案,存在一些变体。下面,类似于上文对编码的第一实施方式的描述,根据根据参照表4d给出的第四方案,利用分解的展开表示及其存储,对解码的第一实施方式进行描述。显而易见的是,以Schalkwijk算法为例,本发明优选地可应用于置换的秩的解码。
根据第一实施方式的解码
对分解的指数使用展开表示的解码优选地以如下的数据初始化开始。
初始化
●将值w的表用q个权
Figure A200780005870D00491
初始化(在将在下面说明的步骤D-19中,在每一个位置上的循环的尾部对w进行更新)。适当的指令可以是以下类型:
w [ i ] = w 0 i ,  0≤i<q
●计算项P0的分解的mn!个指数(将其存储在具有mn!个单元的表P中,并在下文中将描述的步骤D-18在每个位置的循环的末尾对其进行更新),适当的指令可以是以下类型:
○P[i]=0,1≤i≤mn!
○从d=0到q-1的循环
■读取表Dl!中的、
Figure A200780005870D00493
的分解的mn!个指数
Figure A200780005870D00494
■然后, P [ i ] = P [ i ] + e w 0 d ! i , 其中1≤i≤mn!
●最后,初始化k=0
现在参考图7以说明根据第一实施方式的解码的主要步骤。图7中步骤D-n的符号中的字符“D”表示“解码”。
在n个位置上迭代(对索引k的循环)
第一步骤D-1在于从表Dl!中读取(n-1-k)!的分解的mn!个指数 e ( n - 1 - k ) ! i .
下一个步骤D-2设置值dk=0以及 I k d k = 0 .
接下来是搜索字母表的dk的第一值,以使w[dk]≠0。为了这个目的,提供测试步骤D-3以检查是否w[dk]=0,如果w[dk]=0(箭头“是”),则将dk的值递增(dk=dk+1),并且重复测试步骤D-3,直到发现非零的w[dk]值。如果已发现该值(w[dk]≠0的箭头“否”),下一步骤则对秩t的值进行测试的步骤D-5。如果秩是零(测试步骤D-5输出箭头“是”),那么,采取接下来的步骤都是无意义,直到Pk的指数被更新(步骤D-18)。如果秩不是零(测试步骤D-5输出箭头“否”),程序则继续执行后续步骤D-6和D-7,其中分别设置Sk=0和中间值 I k = I k d k .
下一步骤D-8是用于更新和Sk=Sk+w[dk]的计算。随后对和Sk的分解的mn!个指数
Figure A200780005870D00502
的表Dl进行读取。
步骤D-10的目的是根据关系式 e I k d k i = e ( n - 1 - k ) ! i + e S k i - P [ i ] (其中1≤i≤mn!),计算部分秩的分解的mn!个指数
Figure A200780005870D00504
。在当前循环的末尾对如上初始化的指数P[i]在步骤D-18更新以用于下一个循环,此步骤将在后面说明。
步骤D-11的目的是计算部分秩: I k d k = &Pi; i = 1 m n ! ( p i ) e I k d k i .
接下来的三个步骤的目的是通过将总秩t的值与部分秩比较而计算总秩t的值。为了实现此目的,在步骤D-12中,将dk的值递增(dk=dk+1),并且在测试步骤D-13测试: t - I k d k &GreaterEqual; 0 ? .
如果满足该不等式(箭头“是”),步骤D-7到D-13则以dk递增后的新值进行重复。否则(箭头“否”),程序则执行步骤D-14,用于递减dk(dk=dk-1)以在步骤D-12前返回到dk值。对于dk的该值,部分秩
Figure A200780005870D00507
取上述的中间值Ik(步骤D-15: I k d k = I k )。于是,秩t得到更新,成为 t = t - I k d k (步骤D-16),并且根据表Dl中w[dk]的分解的mn!个指数
Figure A200780005870D005010
的读数将Pk的指数更新(步骤D-17)。接下来,适当地更新指数为 P [ i ] = P [ i ] - e w [ d k ] i , 其中1≤i≤mn!(步骤D-18)。然后将w[dk]的值递减(在步骤19,w[dk]=w[dk]-1),并将索引k的值递增(步骤D-20,k=k+1),以准备下一个循环。
在返回第一步骤D-1前,进行检查以确保还有n个分量未被处理。为此,提供测试步骤D-21,通过将k的值与n进行比较(k<n),对k的值进行测试。只要索引k还未达到值n(测试D-21输出为箭头“是”),处理则在下一个k值的步骤D-1重新开始。否则(在步骤D-21输出处的箭头“否”),处理则在结束步骤D-22终止。
应当记住,步骤D-11的目的是通过根据项(n-1-k)!、Sk和Pk三个中间分解利用在步骤D-10中确定的部分秩的分解来计算该部分秩。在步骤D-1和D-9中执行的其中两个((n-1-k)!和Sk)的确定包括在各表Dl!和Dl中的简单读取。在步骤D-18中确定的第三中间分解(Pk)也通过读取表Dl(步骤D-17)、接着通过将中间分解的指数减去已被读取的基本分解的指数而对其进行更新(步骤D-18)。上述对中间分解的初始化需要对表Dl!进行q次读取,然后通过将中间分解的指数加上q个基本分解读数而对其进行更新。
关于上文描述的编码,图7的处理允许可在合适的情况下降低某些步骤的复杂性的变体。
涉及比率Rk(如前所述)的指数的使用的变体尤其值得注意。实际上,在上述参考图7描述的解码运算过程中,对于给定的位置k,对多个d值计算指数。对于测试的每一个d值,对于每个指数而言,其它变体需要进行减和加( e I k d k i = e ( n - 1 - k ) ! i - e P k i + e S k i )。但是,使用比率Rk的指数的变体仅需要进行加法( e I k d k i = R [ i ] + e S k i ),这是因为对于给定的位置k,仅有和Sk及其指数
Figure A200780005870D00514
是根据d变化的。
根据第二实施方式的解码
现在参考图8说明使用分解的紧凑表示进行解码的实施例。
首先,将数据如下初始化。
初始化
●应先参考具有q个单元的表w以确定项 w [ i ] = w 0 i , 其中0≤i<q。
●计算包含Pk的分解的mn!个指数的紧凑表示的字eP。为此:
○设置eP=0
○提供从d=0到q-1的循环:
■在表D′l!中读取包含的mn!个指数的紧凑表示的字
■更新 e P = e P + e w 0 d !
●然后设置k=0
在n个位置上迭代(对索引k的循环)
图8中的步骤DC-n的符号中的字符“DC”表示采用“紧凑表示”进行“解码”。
步骤DC-1,在表D′l!中读取包含项(n-1-k)!的mn!个指数的紧凑表示的字e(n-1-k)!
步骤DC-2到DC-8与上文中参考图7描述的步骤DC-2到DC-8类似。
另一方面,在步骤DC-9中,读取包含在表D′l中的和Sk的mn!个指数的紧凑表示的字。然后,在步骤DC-10中,计算包含部分秩的指数的紧凑表示的字,优选地如下计算:
e I k d k = e ( n - 1 - k ) ! + e S k 然后 e I k d k = e I k d k - e P
总体步骤DC-11总体上在于部分秩
Figure A200780005870D00525
的指数的抽取。为此,规定:
-对i(1≤i≤ml!)进行循环(在步骤DC-111中将i初始化为i=1,然后抽取指数
Figure A200780005870D00526
(步骤DC-112,下文将描述),将循环索引i与值mn!进行比较(步骤DC-113),将索引加1(步骤DC-114)直到其达到值mn!);
-抽取指数
Figure A200780005870D00527
(步骤DC-112):
通过用掩码 ( ( 1 < < b n i ) - 1 ) 屏蔽
Figure A200780005870D0052171406QIETU
的高位而将其在紧凑指数
Figure A200780005870D005210
的低位表示:
Figure A200780005870D005211
在屏蔽后,将紧凑指数
Figure A200780005870D005212
右移
Figure A200780005870D005213
位:
e I k d k = e I k d k > > b n i
总体步骤DC-11与图6中用于编码的总体步骤CC-9类似。
步骤DC-12到DC-17类似于参考图7中以展开表示进行解码的步骤D-11到D-16类似。
另一方面,通过在步骤DC-181在表D′l中读取包含w[dk]的mn!个指数的紧凑表示的字
Figure A200780005870D005215
,并在步骤DC-182对Pk的指数进行适当的更新( e P = e P - e w [ d k ] ),而实现总体步骤DC-18中对Pk的指数(表P)的更新。
然后,步骤DC-19到DC-22类似于图7中采用展开的分解进行解码中的步骤D-19到D-22。
现在说明上述变体提供的各种优点。
使用ml!(和/或ml或m′l)的表并具有展开表示的第一实施方式的变体比仅使用mn!的表的主实施方式包含更少的加/减运算。
在该情况下,首先,对于最后的位置,复杂性的降低是非常显著的(即,当m(n-k)!,m′l或ml小于mn!时)。但是,这种复杂性的降低伴随着存储器读取步骤(C-31、C-6和C-7)的复杂性的提高。另一方面,尽管待读取的值更少了,但是地址计算更复杂。
值得注意的折衷方案包含规律地存储基本分解(具有mn!个指数),以帮助实现表Dl和Dl!的寻址,然后将值ml!储存在具有(n+1)个单元的表Dm中。然后,应存储值ml,以有效地减少加/减的数量。但是,该措施必然伴随着在步骤C-6和D-9(或C-3和D-19)之前读取值
Figure A200780005870D00531
,而值m(n-k)!必须仅在k的每次迭代开始时读取。
另外,与展开表示相比,紧凑表示的益处如下:
-更新表P的步骤仅包括在编码中(或在解码中)进行单一的加(或减),
-指数
Figure A200780005870D00532
的计算也仅需要单一的加和单一的减,
-用于读取字eK的地址计算是直接的,并对于每一个值K仅需要单一的存储器访问和读取。
但是,紧凑表示需要抽取包含在字
Figure A200780005870D00533
中的部分秩
Figure A200780005870D00534
的指数(步骤CC-9和DC-11)。但是,如会在下述内容中看到的,对于根据部分秩的素因数分解计算部分秩而言,该操作不一定是缺点。
现在说明用于根据部分秩的素因数分解计算部分秩的这些变体的优点。
对于编码中(或解码中)步骤C-9和CC-10(或D-11和DC-12),用于计算素因数幂的乘积的步骤的复杂性随着因数数量的增加显著地增加,即使其仍然远不如现有技术中的除法复杂。现在,实际上,部分秩分解中的许多指数都是零,因此其相应的幂都为1。经常地,所有的指数都是零,或者仅第一指数是非零。所以,能够仅检测并保持非零的指数幂是有用的。在详细表示中,该检测可仅通过mn!个测试或m(n-1-k)!个测试(每个检测用于一个素因数)而执行。
有利地,紧凑表示使得通过单次测试就能测试出所有的指数是否为零(是否 e I k d k = 0 ),并且如果是的话,则秩t′=1。另外,对et′的高位的检测使得可获得秩t′中最大非零指数素因数的索引,并可减少编码中的步骤CC-9(或解码中的DC-11)的循环的重复次数。
但是应该注意,对如紧凑表示的详细表示中的非零指数的检测会增加复杂性。如果所有的指数都是非零的,素因数的幂的乘法的复杂性则会保持不变,且该复杂性然后会因检测非零指数的过程的复杂性而增加。
因此,在第一变体中,只有当素因数的可能的数量变得很大(k远小于n)且其幂的乘法的复杂性高于检测过程的复杂性时,才能进行零指数的检测。为此,可提供根据位置的不同循环,即使该实施会以指令行的增加为代价。
也可将展开表示和紧凑表示相结合。对于最后的位置(低的ml!值),中间分解的计算几乎不需要运算。于是,使用展开表示是受到欢迎的,因为这种表示不需要抽取部分秩的指数。另一方面,对于第一位置,使用紧凑表示则更加受到欢迎。
现在说明现有的编码器/解码器的一些示例性实施。
3GPP AMR-WB+编码器
3GPP AMR-WB+编码器(标准[3GPPTS26.304])采用代数矢量量化,其字典是8维的Gosset RE8网络的置换码的并集。
TCX技术对应于通过变换的预测编码。更具体地,其包括在感知加权滤波后应用的FFT变换编码方法。在标准[3GPPTS26.304]中,将获得的FFT谱分割为8维的子波段(或子矢量),并且对这些子矢量分别地编码。子矢量的量化采用常规的断点网络(network ofpoints)RE8。8维量化字典由从断点网络RE8获得类型I的置换码的并集构成。
在根据标准[3GPPTS26.304]的TCX编码器中,每一个置换码对应于给定的8维带符号前导矢量。网络RE8的断点的量化索引由以下类型的公式计算:
索引=基数偏移+置换的秩
秩由Schalkwijk公式计算,而将基数偏移制成表格。然而,这些带符号的前导通过其绝对前导表示,以优化存储和置换码中的搜索。相关联的绝对前导的列表可在以下参考资料中找到:
由Ragot S.、Bessette B.和Lefebvre R.在2004年5月的ICASSP会议论文集的第1卷第501-4页发表的论文“Low-complexity multi-rate latticevector quantization with application to wideband TCX speech coding at 32kbit/s(应用于32千位/秒的宽带TCX语音编码的低复杂性的多速率点阵矢量量化)”。
为了说明本发明的不同变体,下面介绍三个示例性实施。前两个示例性实施关于置换的秩的计算(编码),一个采用分解的展开表示,而另一个采用紧凑表示。
在下述的这些示例性实施以及相应的附录中,表R和P的索引为从R[0]到R[mn!-1]和从P[0]到P[mn!-1](而不是如上文的示例中介绍的从1到mn!),而对秩的计算的处理没有特别的影响。
第一示例性实施(编码)
在该实施方式中,采用基本分解的展开表示。
其指数存储在两个具有36个单元(=(8+1)x4)的表中。这些表在附录A-11中给出,并且表示为Dl[36](包含整数l(0≤l≤8)的分解的指数,因而对于0,存储哑分解)以及Dl![36](包含其秩的分解的指数)。
3、5和7的幂的三个表也被存储:
Pow3[4]={1,3,9,27}
Pow5[3]={1,5,25}
Pow7[3]={1,7,49}
在该实施方式中,部分秩的分解是根据两个中间分解而确定,这两个中间分解中的一个是整数Sk的基本分解,而另一个是如下的商的中间分解:
R k = ( 7 - k ) ! &Pi; i = 0 q - 1 ( w k i ! )
如上所示,比根据对应于(7-k)!和的(q+1)个基本分解确定中间分解更优选的是,根据Rk+1的中间分解和(7-k)和的两个基本分解确定该中间分解。该中间分解的四个指数存储在表R中。
Figure A200780005870D00554
Figure A200780005870D00561
表11:用于位置k的部分秩的项的分解并用于8维置换码的ml或ml!的最大值
本发明利用上表11中每个位置显示的
Figure A200780005870D0056171927QIETU
Figure A200780005870D00563
的最大值以及m(7-k)!的知识,从而不用计算索引大于这些限制的素因数的指数。
附录A-12给出了相应的过程。要注意的是,在这些位置上的循环被展开。还要注意的是,商的素因数pi的指数存储在具有4个单元的表R的单元R[i-1]中。
第二示例性实施(编码)
在3GPPAMR-WB+编码器的变体中,基本分解以紧凑的方式表示。将包含其指数的字存储在两个具有9(=(8+1))个单元的表中。参考附录A-21,表D′l包含用于整数l(0≤l≤8)的分解的字(因而具有对l=0的分解的哑存储),并且表D′l!包含用于其秩的分解的字。
3、5和7的幂也存储在具有12个单元(具有用于未使用的幂的0的空存储)的表Pow[12]中。
部分秩的分解根据三个中间分解确定,其中两个是整数Sk和秩(7-k)!的基本分解,而第三个是如下所示的、部分秩的分母的中间分解:
P k = &Pi; i = 0 q - 1 ( w k i ! )
如前所述,比根据的q个基本分解确定Pk的中间分解更优地,根据Pk+1的中间分解和
Figure A200780005870D00566
的基本分解确定该分解。包含该中间分解的四个指数的紧凑字在附录A-22中记为“eP”。同样,“el”表示包含部分秩的分解的四个指数的紧凑字。
这里,再次应用m(7-k)!的知识,以仅抽取表示部分秩的分解的、紧凑字的m(7-k)!个指数。
相应的处理是附录A-22的主题。这里,在所述位置上的循环也是展开的。
第三示例性实施(解码)
第三示例性实施处理在3GPP AMR-WB+解码中进行的置换的秩的解码。
如在第一示例性实施例中一样,优选地使用基本分解的展开表示,并如在第二示例性实施例中一样,优选地使用部分秩的三项分解。但是,在位置上的循环是未展开的。
如前所述,Pk的中间分解是根据的Pk-1的中间分解以及
Figure A200780005870D00571
的基本分解来确定,而不是根据基本分解来确定。此中间分解的四个指数都被存储于表P中。与此相似,根据Pk的中间分解和(7-k)!的基本分解,能计算另一个中间分解(商的中间分解),其指数存储于表R中。
相应的处理是附录A-3的主题。应当注意的是,商(或乘积)的素因数pi的指数存储于具有四个单元的表R的单元R[i-1]中(或表P的单元P[i-1])。
因此,以上第一示例在两项(包括商)中使用了部分秩的分解,另外两个示例在三项中(分子两项,分母一项)使用了分解。用于解码的模式仅使用了m8!(=4)项,但是用于编码的两个模式使用了单独的位置处理以使用ml!或ml个项,所述ml!或ml项不被读取,但却通过在Gosset网络的断点的八个位置上打破循环而“硬连线”于算法中。
TDAC解码器的示例性实施
最终的示例性实施涉及申请人的TDAC感知式频率解码器,所述解码器用于对以16kHz(多种频率)采样的数字音频信号进行解码,以下将说明所述解码器的原理。
TDAC解码器使用最大维数为15的、具有可变的维数和分辨率的统计矢量量化。
关于8维常规断点网络RE8的置换码,本发明基本上可以降低复杂性。但是,就使用维数大于12的置换码的TDAC解码器而论,本发明显示出极大的优势,因为其不仅允许降低复杂性,还能使解码器在最大精度限制为无符号32位整数的定点处理器上的实现。如果没有本发明,这种实现将是非常复杂的。
此解码器的原理如下。
将带宽被限定为7kHz且以16kHz采样的声频信号再分为具有320个(20ms的)采样的帧。将改进的离散余弦变换(MDCT)应用于具有50%的重叠的640个采样的输入信号块(相当于每20ms刷新一次MDCT分析)。通过将最后31个系数都设置为零(因此仅有前289个系数不为零)来将频谱限定为7225Hz。根据此频谱确定屏蔽曲线,并将所有被屏蔽的系数设置为零。将所述频谱分为32个宽度不相等的频段。任意被屏蔽的频段都根据信号的变换系数来确定。对于所述频谱的每个频段,计算MDCT系数的能量(以估计比例因数)。由32个比例因数组成信号的谱包络,然后在所述帧内进行量化、解码以及传递所述信号。位的动态分配基于用于根据谱包络的量化形式计算出的每个频段的屏蔽曲线,以便在编码器和解码器的二进制分配之间后获得兼容性。然后,由矢量量化器利用在大小上嵌套的字典将每个频段中的标准化的MDCT系数进行量化,所述字典由II型置换码的并集组成。最终,将语调和声音信息以及谱包络和编码系数都在帧内多路传输并传送。
此时,用于计算置换的秩(解码)的示例性实施使用分解的紧凑表示。所使用的置换码的维数是可变的,在所述位置上的循环不是展开的。此实施例图示出对部分秩的分解的非零指数进行检测的方法。
在此,基本分解被紧凑表示。包括其指数的字被存储于两个具有16个(=(15+1))单元的表中。在附录B-1中,表
Figure A200780005870D00581
包含用于整数
Figure A200780005870D00582
的分解的字,且表
Figure A200780005870D00583
包含用于其秩的分解的字。
3的幂也被存储于具有八个单元的表中(表示为Pow3),且5、7、11以及13的幂被存储于具有二十个单元(具有用于未使用的幂的哑存储)的表中(表示为Pow)。
相应的处理被重新转录在附录B-2中。
当然,本发明并不局限于以上以示例方式描述的实施例,而是还包含其它的变形。
对于申请人的知识,本发明包括置换码中的素因数幂分解的第一使用。但是,如同在以置换码进行的矢量量化中一样,当提供组合的表示计算时,这种使用尤其有利。因此,一般地,本发明的目的在于,在用一个或多个置换码进行的编码/解码中的、用于任何组合表示(即使不同于置换的秩)的素因数幂分解的这种使用。
有利地,本发明能够应用于语音信号的编码/解码中,例如在电话终端中,尤其是蜂窝式电话终端中。但是,本发明也应用于其它任意类型的信号(尤其是图像或视频信号)的编码/解码以及编码调制。
本发明的目的还在于使用置换码的、设计以存储于数字信号编码/解码装置的存储器中的计算机程序。因而,此程序包括用于执行本发明意义上的方法的步骤的指令。特别是,以上描述的图4至图8能够对应于这种程序可包括的算法流程图。
本发明的目的还在于一种数字信号编码/解码装置,参考图9,所述数字信号编码/解码装置使用置换码并包括:
-存储单元MEM,其用于存储前面提到的类型的计算机程序的指令,以及预先记录的所选整数的分解的表示,以及
-计算模块PROC,其访问存储单元MEM以执行本发明意义上的方法。
这些装置MEM、PROC能够被设计为:
●根据所选的码矢量y给出置换的秩t(图9中的实线箭头):
○在信源编码器的索引模块中,或者
○在信道解码器的索引模块中,
●或者根据置换的秩t给出待重构的码矢量y(图9中的虚线箭头):
○在信源解码器的解码模块中,或者
○在信道编码器的编码模块中。
当然,存储器MEM中的预先记录的表示可以是地址内容的形式(展开表示)或者是位字的形式(紧凑表示)。
附录
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]=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[0]=1
             else if(d>d7)t=1
 ● Position k=5:
   ○ d=d[5];w[d]=w[d]+1
   ○ R[0]=R[0]+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[0]+Dl[4*S]
             ■ t=t+(1<<i2)
 ● Positions k=4then 3:
   ○ d=d[k];w[d]=w[d]+1
   ○ R[0]=R[0]+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[0]+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[0]=R[0]+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[0]+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[0];w[d]=w[d]+1
   ○  R[0]=R[0]+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[0]+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[0];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[0]+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[0]=R[0]+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[0]+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[0]=1;
                      ● ml=0
                      ● i3=(el>>4)& 0×7
                      ● if(i3>0)
                         ○ pow[0]=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′

Claims (27)

1.一种使用置换码对数字信号进行编码/译码的方法,所述置换码包括组合表示的计算,
其特征在于,所述组合表示由素因数幂分解来表示,并通过对所选整数的分解的、预先记录的表示进行存储器读取来确定。
2.如权利要求1所述的方法,其特征在于,所述预先记录的表示包括表示用于每个所选整数的指数的值,所述值分别与表示连续素数的值相关联地存储。
3.如权利要求1或2所述的方法,其特征在于,所述组合表示包括整数(l)的阶乘值(l!),并且所述预先记录的表示至少包括阶乘值(l!)的分解的表示。
4.如前述任意一项权利要求所述的方法,其特征在于,至少一个所述组合表示(t′)包括整数分子(v)除以整数分母(ρ)的商,并且所述商由素因数幂分解来表示,其中,每个幂均为分配给同一个素数(pi)的、分别与所述分子(v)和所述分母(ρ)相关联的指数的差(
Figure A200780005870C0002153729QIETU
)。
5.如前述任意一项权利要求所述的方法,其特征在于,所选整数的预先记录的表示存储在可寻址的存储器中,并且所述存储器的寻址提供待分配至各素数的一连串指数,以重构所选整数。
6.如权利要求5所述的方法,其特征在于,所选整数的预先记录的表示以一连串地址的方式存储,其中,用于每个素数的地址均给出待分配至所述素数的指数,以重构所述所选整数。
7.如权利要求1至4中的任意一项所述的方法,其特征在于,所述预先记录的表示以包括一连串位组的字的形式存储,其中每个位组均具有:
-取决于素数的权,以及
-取决于将与所述素数相关联的指数的值。
8.如权利要求所述7的方法,其特征在于,通过将至少一个局部掩码连续地应用于位字,并通过根据位权的连续偏移和剩余位的读取,而确定所述素因数的幂。
9.如权利要求2所述的方法,其特征在于,对于组合表示的计算,所述方法包括以下步骤:
-根据所选整数识别出现在形成所述组合表示(
Figure A200780005870C0003153747QIETU
)的乘积和/或商中的项((n-1-k)!,Sk,Pk);
-在存储器中读取包括在所述项的素因数分解中的指数(ei (n-1-k)!,ei sk,ei Pk);以及
-加上和/或减去所读取的指数(ei (n-1-k)!+ei Sk-ei Pk),以确定包括在所述组合表示的素因数幂分解中的所述指数(
Figure A200780005870C0003154016QIETU
),并因此根据所述组合表示的素因数幂分解计算所述组合表示。
10.如权利要求2和9中的任意一项所述的方法,包括用于计算乘积的循环步骤,在每一循环上,所述乘积包括与在前一循环上确定的乘积相乘的项,其特征在于:
-所述在前一循环上确定的乘积以素因数幂分解的形式保留在存储器中;
-与所述在前一循环上确定的乘积相乘的所述项是其分解已被预先记录的所选整数之一;以及
-为了在当前循环上确定所述乘积,逐一地对于每个素数,将根据在所述前一循环上确定的乘积的分解和与所述乘积相乘的所述项的分解推导出的所述指数相加。
11.如权利要求2和9中的任意一项所述的方法,包括用于计算除法的循环步骤,在每一循环上,所述除法包括对在前一循环上确定的商进行除法的项,其特征在于:
-所述在前一循环上确定的商以素因数幂分解的形式保留在存储器中;
-除所述商的所述项是其分解已被预先记录的所选整数之一;以及
-为了在当前循环上确定所述除法,逐一地对于每个素数,从所述在前一循环上确定的商推到出的指数中减去由所述项的分解推导的指数。
12.如前述任意一项权利要求所述的方法,其特征在于,所述置换码包括计算表示置换的秩(t)的量,所述量包括部分秩()的累加,每一部分秩均对应于所述组合表示之一。
13.如权利要求12所述的方法,其特征在于,当对矢量量化的数字信号进行编码时,使用了置换秩的计算(OP2),以对前导矢量的分量的置换进行索引,所述置换已经在先前的步骤(OP1)中执行以确定最接近输出矢量的码矢量。
14.如权利要求12和13中的任意一项所述的方法,其特征在于,当根据置换的秩(t)的给定值对矢量量化的数字信号进行译码时:
-根据待构造的码矢量的至少一个假定分量(dk),计算表示与所述给定值接近的置换秩的至少一个量(OP3);
-如果所述量满足与所述秩的所述给定值的接近条件,那么所述假定分量(dk)的选择便生效。
15.如权利要求14所述的方法,其特征在于,如果所述秩(t)的所述给定值能够处于到与所述假定分量(dk)相关的部分秩的累积值与到与所述假定分量加一后对应的分量(dk+1)相关的部分秩的累积值之间,则满足所述接近条件。
16.如权利要求13至15中的任意一项所述的方法,其特征在于,所述编码/译码的类型为具有矢量量化的信源编码/译码。
17.如权利要求12所述的方法,其特征在于,所述编码/译码的类型为信道调制编码/译码,并且所述方法包括:
-在传输之前,根据置换的秩确定码矢量(OP3);以及
-在接收时,通过对应于接收的矢量的码矢量计算置换的秩(OP2)。
18.如权利要求12至17中的任意一项所述的方法,并结合权利要求3,其中,所述置换码的最大维数为n,其特征在于,所述所选整数至少包括:
-1和所述最大维数n之间的整数;
-整数0的阶乘值;
-以及,优选地,1和所述最大维数n之间的整数的阶乘值。
19.如权利要求18所述的方法,其特征在于,所述所选整数还包括值0。
20.如权利要求12至19中的任意一项所述的方法,其特征在于,所述置换码利用Schalkwijk列举,并且与码矢量(y0,...yn-1)的截断(yk,...yn-1)相关的部分秩
Figure A200780005870C00051
表示为:
I k d k = ( n - 1 - k ) ! &Pi; i = 0 q - 1 ( w k i ! ) ( &Sigma; d = 0 d k - 1 w k d ) , 其中
-符号
Figure A200780005870C00053
表示从0到m的整数指数i的乘积,
-符号
Figure A200780005870C00054
表示从0到m的整数指数i的和;
-符号l!为整数l的阶乘值,对于l>0,l!=1×2×3×...×(l-1)×l,并且0!=1,
-整数n为所述置换码的维数,其对应于码矢量包括的分量的总数;
-0和n-1之间的整数k为所述码矢量的第k个分量yk的索引;
-整数q为所述码矢量包括的分量的数量;以及
-项wk d表示k和n-1之间的、其值等于同一索引分量d的索引分量的数量。
21.如权利要求20所述的方法,并结合权利要求9,其特征在于,将所述部分秩
Figure A200780005870C00061
形成组合表示的乘积和/或商中识别或出现的所述整数为:
-阶乘项(n-1-k)!,对于0和n-1之间的所有整数k;
-包含在乘积 P k = &Pi; i = 0 q - 1 ( w k i ! ) 中的每一项
Figure A200780005870C00063
的值和/或其阶乘值,每一项
Figure A200780005870C00064
均在0和n之间;以及
-对于0和n-1之间的所有整数k的项 S k = &Sigma; d = 0 d k - 1 w k d ,每一项均在1和n-1之间。
22.如权利要求20和21中的任意一项所述的方法,并结合权利要求13,其特征在于,通过确定所述部分秩
Figure A200780005870C00066
的累加,在编码时确定所述秩的计算,对于0和n-1之间的索引k,每一所述部分秩均根据码矢量(y0,...yn-1)的截断(yk,...yn-1)估计。
23.如权利要求22所述的方法,其特征在于,对所述项 S k = &Sigma; d = 0 d k - 1 w k d 进行测试,以避免在所述项Sk为零时估计所述部分秩
Figure A200780005870C00068
24.如权利要求20和21中的任意一项所述的方法,并结合权利要求14和15中的任意一项,其特征在于,在译码时计算表示所述部分秩
Figure A200780005870C00069
的缩减的量,以确定索引k从0到n-1的、所述码矢量的所述分量yk
25.如权利要求22至24中的任意一项所述的方法,并结合权利要求10和11中的任意一项,其特征在于,将用于前一索引k的所述项 P k = &Pi; i = 0 q - 1 ( w k i ! ) 的分解中的指数的和暂时存储在存储器中,以加到用于当前指索引k的项
Figure A200780005870C00071
的分解的指数中或者从中减去。
26.一种待存储到利用置换码对数字信号进行编码/译码的装置的存储器中的计算机程序,其特征在于,所述计算机程序包括用于实施如权利要求1至25中的任意一项所述方法的步骤的指令。
27.一种利用置换码对数字信号进行编码/译码的装置,其特征在于,所述装置包括:
-存储器单元,用于存储如权利要求26所述的计算机程序的指令以及所选整数的分解的预先记录的表示;以及
-计算模块,其访问所述存储器单元以实施如权利要求1至25中的任意一项所述的方法。
CN2007800058706A 2006-02-17 2007-02-13 数字信号的编码/译码方法及其装置 Active CN101385245B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0601435A FR2897742A1 (fr) 2006-02-17 2006-02-17 Codage/decodage perfectionnes de signaux numeriques, en particulier en quantification vectorielle avec codes a permutation
FR0601435 2006-02-17
PCT/FR2007/050778 WO2007093730A2 (fr) 2006-02-17 2007-02-13 Codage/decodage perfectionnes de signaux numeriques, en particulier en quantification vectorielle avec codes a permutation

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN2008101679211A Division CN101447792B (zh) 2006-02-17 2007-02-13 使用置换码对数字信号进行编码/译码的方法
CN2008101674519A Division CN101447791B (zh) 2006-02-17 2007-02-13 使用置换码对数字信号进行编码/译码的方法

Publications (2)

Publication Number Publication Date
CN101385245A true CN101385245A (zh) 2009-03-11
CN101385245B CN101385245B (zh) 2012-09-26

Family

ID=37665434

Family Applications (3)

Application Number Title Priority Date Filing Date
CN2007800058706A Active CN101385245B (zh) 2006-02-17 2007-02-13 数字信号的编码/译码方法及其装置
CN2008101674519A Expired - Fee Related CN101447791B (zh) 2006-02-17 2007-02-13 使用置换码对数字信号进行编码/译码的方法
CN2008101679211A Expired - Fee Related CN101447792B (zh) 2006-02-17 2007-02-13 使用置换码对数字信号进行编码/译码的方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN2008101674519A Expired - Fee Related CN101447791B (zh) 2006-02-17 2007-02-13 使用置换码对数字信号进行编码/译码的方法
CN2008101679211A Expired - Fee Related CN101447792B (zh) 2006-02-17 2007-02-13 使用置换码对数字信号进行编码/译码的方法

Country Status (10)

Country Link
US (3) US7994944B2 (zh)
EP (3) EP2009800A3 (zh)
JP (3) JP4846809B2 (zh)
KR (3) KR101370019B1 (zh)
CN (3) CN101385245B (zh)
BR (3) BRPI0707839A2 (zh)
FR (1) FR2897742A1 (zh)
MX (1) MX2008010490A (zh)
RU (3) RU2494537C2 (zh)
WO (1) WO2007093730A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105680992A (zh) * 2016-01-26 2016-06-15 华中科技大学 陪集划分(n,n(n-1),n-1)置换群码的构造方法及其码集合产生器

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2461079C2 (ru) * 2008-02-15 2012-09-10 Нокиа Корпорейшн Упрощенная индексация и деиндексация векторов
US8079160B2 (en) * 2008-09-26 2011-12-20 Nike, Inc. Articles with retractable traction elements
CN101430881B (zh) * 2008-11-10 2013-04-17 华为技术有限公司 一种编码、解码、编解码方法、编解码系统以及相关装置
US8700410B2 (en) * 2009-06-18 2014-04-15 Texas Instruments Incorporated Method and system for lossless value-location encoding
JP5629319B2 (ja) * 2010-07-06 2014-11-19 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America スペクトル係数コーディングの量子化パラメータを効率的に符号化する装置及び方法
RU2497277C2 (ru) * 2010-07-29 2013-10-27 Российская Федерация, от имени которой выступает государственный заказчик-Государственная корпорация по атомной энергии "Росатом" Способ сжатия двоичных данных в виде структурированных информационных блоков
GB201320983D0 (en) * 2013-11-28 2014-01-15 Ibm Data encoding in solid-state storage apparatus
US9838700B2 (en) * 2014-11-27 2017-12-05 Nippon Telegraph And Telephone Corporation Encoding apparatus, decoding apparatus, and method and program for the same
SE543293C2 (en) 2015-04-17 2020-11-17 Kelicomp Ab Improved compression of a file
TWI581579B (zh) * 2015-12-30 2017-05-01 義守大學 通訊接收裝置、其訊號接收方法、訊號處理方法及訊號傳送方法
CN107784621A (zh) * 2016-08-25 2018-03-09 苏州创新通用色谱仪器有限公司 一种液相色谱数据分块压缩方法
US10950251B2 (en) * 2018-03-05 2021-03-16 Dts, Inc. Coding of harmonic signals in transform-based audio codecs

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2441452C3 (de) * 1973-08-31 1980-01-17 Hitachi, Ltd., Tokio Anordnung zur Ultraschall-Nachrichtenübertragung
JPH0318820A (ja) * 1989-06-15 1991-01-28 Matsushita Electric Ind Co Ltd アクティブマトリックスアレイの駆動方法
SU1750061A1 (ru) * 1989-12-11 1992-07-23 Омский Институт Инженеров Железнодорожного Транспорта Устройство дл исправлени ошибок
JPH06266315A (ja) * 1993-03-17 1994-09-22 Fujitsu Ltd 液晶表示装置
FR2759806B1 (fr) * 1997-02-19 1999-04-23 Gemplus Card Int Systeme cryptographique comprenant un systeme de chiffrement et dechiffrement et un systeme de sequestre de cles, et les appareils et dispositifs associes
US5832443A (en) * 1997-02-25 1998-11-03 Alaris, Inc. Method and apparatus for adaptive audio compression and decompression
JP3453122B2 (ja) * 1998-08-17 2003-10-06 ヒューズ・エレクトロニクス・コーポレーション 最適性能に近いターボコードインターリーバ
RU2199826C2 (ru) * 2000-09-25 2003-02-27 Государственное унитарное предприятие Специализированный центр программных систем "Спектр" Способ итеративного шифрования блоков цифровых данных
RU2222868C2 (ru) * 2001-12-26 2004-01-27 Федеральное государственное унитарное предприятие "Научно-исследовательский институт "Вектор" Способ итеративного шифрования блоков цифровых данных
CA2388358A1 (en) * 2002-05-31 2003-11-30 Voiceage Corporation A method and device for multi-rate lattice vector quantization
MXPA04012507A (es) 2002-06-20 2005-06-08 Novalar Pharmaceuticals Inc Formulaciones estabilizadas para antoagonistas del receptor alfa-adrenergico y usos de las mismas.
KR101190875B1 (ko) * 2004-01-30 2012-10-15 프랑스 뗄레콤 차원 벡터 및 가변 분해능 양자화

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105680992A (zh) * 2016-01-26 2016-06-15 华中科技大学 陪集划分(n,n(n-1),n-1)置换群码的构造方法及其码集合产生器
CN105680992B (zh) * 2016-01-26 2019-05-03 华中科技大学 一种通信信道编码方法及置换码集合产生器

Also Published As

Publication number Publication date
RU2494537C2 (ru) 2013-09-27
JP4805365B2 (ja) 2011-11-02
US20100228551A1 (en) 2010-09-09
CN101447792B (zh) 2012-10-10
CN101385245B (zh) 2012-09-26
JP2009527171A (ja) 2009-07-23
RU2494536C2 (ru) 2013-09-27
MX2008010490A (es) 2008-11-27
RU2008139887A (ru) 2010-04-20
BRPI0722374A2 (pt) 2012-05-22
JP4805364B2 (ja) 2011-11-02
RU2437207C2 (ru) 2011-12-20
RU2008137122A (ru) 2010-03-27
US20090207934A1 (en) 2009-08-20
BRPI0707839A2 (pt) 2011-05-10
KR20090005084A (ko) 2009-01-12
CN101447792A (zh) 2009-06-03
JP2009105947A (ja) 2009-05-14
FR2897742A1 (fr) 2007-08-24
BRPI0722375A2 (pt) 2012-05-22
KR101358070B1 (ko) 2014-02-06
US7994944B2 (en) 2011-08-09
WO2007093730A2 (fr) 2007-08-23
US20090207933A1 (en) 2009-08-20
WO2007093730A3 (fr) 2008-11-13
RU2008139888A (ru) 2010-04-20
KR101368478B1 (ko) 2014-03-06
EP2009800A2 (fr) 2008-12-31
CN101447791B (zh) 2012-11-28
KR101370019B1 (ko) 2014-03-14
JP2009153157A (ja) 2009-07-09
JP4846809B2 (ja) 2011-12-28
US7973679B2 (en) 2011-07-05
EP2002546A2 (fr) 2008-12-17
KR20090007294A (ko) 2009-01-16
CN101447791A (zh) 2009-06-03
EP2002546B1 (fr) 2020-04-01
EP2009800A3 (fr) 2013-06-19
US7994945B2 (en) 2011-08-09
EP2009801A3 (fr) 2013-06-19
EP2009801A2 (fr) 2008-12-31
KR20090005083A (ko) 2009-01-12

Similar Documents

Publication Publication Date Title
CN101447792B (zh) 使用置换码对数字信号进行编码/译码的方法
KR101152707B1 (ko) 다단계 양자화 방법 및 장치
US6662154B2 (en) Method and system for information signal coding using combinatorial and huffman codes
CN103280221B (zh) 一种基于基追踪的音频无损压缩编码、解码方法及系统
WO2015130210A1 (en) Method and apparatus for pyramid vector quantization indexing and de-indexing of audio/video sample vectors
CN101981618A (zh) 复杂度减少的矢量编制索引和去索引
CN101304254A (zh) 矢量编/解码方法、装置及流媒体播放器
CA2147394C (en) Quantization of input vectors with and without rearrangement of vector elements of a candidate vector
CN100546200C (zh) 用于从位流解码可变长代码字的方法、解码器、系统和设备
EP3193332B1 (en) Vector quantization
Xie et al. Algebraic vector quantization of LSF parameters with low storage and computational complexity
US8924202B2 (en) Audio signal coding system and method using speech signal rotation prior to lattice vector quantization
Vasilache et al. Multiple-scale leader-lattice VQ with application to LSF quantization
Vasilache et al. Indexing and entropy coding of lattice codevectors
CN117292694A (zh) 基于时不变编码的少令牌神经语音编解码方法和系统
Hwang et al. An MPEG-4 Twin-VQ based high quality audio codec design

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant