第5章〓信源编码 前面介绍了信源熵和信息率失真函数的概念,了解了传送信源信息只需具有信源极限熵或信息率失真函数大小的信息率。但是实际通信系统中,用于传送信源信息的信息率远大于此,那么能否达到或接近像信源熵或信息率失真函数这样的最小信息率,就是编码定理要回答的问题之一。编码分为信源编码和信道编码,其中信源编码又分为无失真和限失真。由于这些定理都要求符号数很大,才能使信息率接近规定的值,因而称这些定理为极限定理。一般称无失真信源编码定理为第一极限定理,称信道编码定理(包括离散和连续信道)为第二极限定理,称限失真信源编码定理为第三极限定理。完善这些定理是香农信息论的主要内容。下面分别讨论这三大定理。 信源符号之间分布不均匀,且存在相关性,使信源存在冗余度,信源编码的主要任务是减少冗余,提高编码效率。具体来说,就是针对信源输出符号序列的统计特性,寻找一定的方法,将信源输出符号序列变换为最短的码字序列。信源编码的基本途径有两个: 使序列中的各个符号尽可能互相独立,即解除相关性; 使编码中各个符号出现的概率尽可能相等,即概率均匀化。 信源编码的基础是信息论中的两个编码定理: 无失真编码定理和限失真编码定理。前者是可逆编码的基础。可逆是指当信源符号转换为代码后,可由代码无失真地恢复原信源符号。当已知信源符号的概率特性时,可计算它的符号熵,即每个信源符号载有的信息量。编码定理不但证明了必定存在一种编码方法,使代码的平均长度可任意接近且不能低于符号熵,而且阐明了实现该目标的途径,就是使概率与码长匹配。无失真编码或可逆编码只适用于离散信源。对于连续信源,编成代码后无法无失真地恢复原来的连续值,因为连续信源输出符号的取值可有无限多个。此时只能根据率失真编码定理在失真受限的情况下进行限失真编码。信源编码定理出现后,编码方法趋于合理化。本章讨论离散信源编码,首先从无失真编码定理出发讨论香农码,其次介绍限失真编码定理,最后简单介绍一些常用的信源编码方法。 5.1编码的概念 将信源消息分为若干组,即符号序列xi,xi=(xi1,xi2,…,xil,…,xiL),序列中的每个符号取自符号集A,xiL∈A={a1,a2,…,ai,…,an}。而每个符号序列xi依照固定的码表映射为一个码字yi,这样的码称为分组码,有时也称块码,如图51所示,只有分组码才有对应的码表,而非分组码不存在码表。 如果信源输出的符号序列长度L=1, 图51信源编码器示意图 信源概率空间为 XP=a1a2…anp(a1)p(a2)…p(an) 需要传输这样的信源符号,常用的一种信道是二元信道,它的信道基本符号集为{0,1}。若将信源X通过这样的二元信道传输,就必须将信源符号ai变换为由0、1符号组成的码符号序列,这个过程就是信源编码。可用不同的码符号序列,如表51所示。 表51码符号序列 信源符号ai 符号出现概率p(ai) 码1 码2 码3 码4 码5 a11/2000011 a21/40111101001 a31/8100000100001 a41/811110110000001 一般情况下,码可分为两类: 一类是固定长度的码,码中所有码字的长度相同,如表51中的码1就是定长码; 另一类是可变长度的码,码中码字的长度不同,如表51中码1之外的其他码都是变长码。 采用分组编码方法,需要分组码具有某些属性,以保证接收端能够迅速准确地将码译出。下面首先讨论分组码的一些直观属性。 1) 奇异码和非奇异码 若信源符号和码字是一一对应的,则该码为非奇异码,反之为奇异码。例如,表51中的码2为奇异码,码3为非奇异码。 2) 唯一可译码 任意有限长的码元序列,只能被唯一地分割为一个个的码字,称为唯一可译码。例如,{0,10,11}是一种唯一可译码。因为任意一串有限长码序列,如100111000,只能被分割为10,0,11,10,0,0,任何其他分割法都会产生一些非定义的码字。显然,奇异码不是唯一可译码,而非奇异码中有非唯一可译码和唯一可译码。表51中的码4是唯一可译码,而码3不是唯一可译码。例如,10000100是由码3的(10,0,0,01,00)产生的码流,译码时可有多种分割方法,如10,0,00,10,0,此时就产生了歧义。 3) 非即时码和即时码 唯一可译码又分为非即时码和即时码。如果接收端收到一个完整的码字后,不能立即译码,还需等下一个码字开始接收后才能判断是否可以译码,则这样的码称为非即时码。表51中码4是非即时码,而码5是即时码。码5中只要收到符号1就表示该码字已完整,可以立即译码。即时码又称非延长码,任意一个码字都不是其他码字的前缀部分,有时称为异前缀码。在延长码中,有的码是唯一可译的,主要取决于码的总体结构,例如,表51中码4的延长码就是唯一可译的。 综上所述,可对码进行如下分类: 通常可用码树表示各码字的构成。m进制的码树如图52所示。图52(a)是二进制码树,图52(b)是三进制码树。其中A点是树根,分为m个树枝,称为m进制码树。树枝的尽头是节点,中间节点生出树枝,终端节点安排码字。码树中自根部经过一个分枝到达m个节点,称为一级节点。二级节点的可能个数为m2,一般r级节点有mr个。图52(a)的码树是4节,有24=16个可能的终端节点。若将从每个节点发出的m个分枝分别标以0,1,…,m-1,则每个r级节点需用r个m元数字表示。如果指定某个r级节点为终端节点,表示一个信源符号,则该节点就不再延伸,相应的码字为从树根到此端点的分枝标号序列,其长度为r。这样构造的码满足即时码的条件。因为从树根到每个终端节点的路径均不相同,故一定满足对前缀的限制。如果有q个信源符号,就要在码树上选择q个终端节点,用相应的m元基本符号表示这些码字。由这样的方法构造的码称为树码,若树码的各个分支都延伸到最后一级端点,此时共有mr个码字,这样的码树称为满树,如图52(a)所示。否则称为非满树,如图52(b)所示,这时的码字就不是定长的了。总结上述码树与码字的对应关系,可得到如图53所示的关系图。 图52码树图 图53码树与码字对应的关系 用树的概念可导出唯一可译码存在的充分和必要条件,各码字的长度Ki应符合克劳夫特不等式(Kraft’s inequality),即 ∑ni=1m-Ki≤1(511) 其中,m是进制数,n是信源符号数。 上述不等式是唯一可译码存在的充要条件,必要性表现在如果是唯一可译码,则必定满足该不等式,如表51中的码1、码4和码5等都满足不等式; 充分性表现在如果满足该不等式,则这种码长的唯一可译码一定存在,但并不代表所有满足不等式的码一定是唯一可译码。所以说,该不等式是唯一可译码存在的充要条件,而不是唯一可译码的充要条件。 例51用二进制对符号集{a1,a2,a3,a4}进行编码,对应的码长分别为K1=1,K2=2,K3=2,K4=3,应用式(511)判断 ∑4i=12-Ki=2-1+2-2+2-2+2-3=98>1 图54树码 因此不存在满足这种Ki的唯一可译码。可以用树码进行检查,由图54所示,要形成上述码字,必然在中间节点放置码字,若符号a1用“0”码,符号a2用“10”码,符号a3用“11”码,则符号a4只能是符号a2或a3编码的延长码。 如果将各码字长度改为K1=1,K2=2,K3=3,K4=3,则此时 ∑4i=12-Ki=2-1+2-2+2-3+2-3=1 这种Ki的唯一可译码是存在的,如{0,10,110,111}。但是必须注意,克劳夫特不等式只用于说明唯一可译码是否存在,并不能作为唯一可译码的判据。如码字{0,10,010,111},虽然满足克劳夫特不等式,但不是唯一可译码。 5.2无失真信源编码定理 若信源输出符号序列的长度L≥1,即 X=(X1,X2,…,Xl,…,XL),Xl∈A={a1,a2,…,ai,…,an} 变换为由KL个符号组成的码序列(有时也称作码字,以下均用码字来表示)。 Y=(Y1,Y2,…,Yk,…,YKL),Yk∈B={b1,b2,…,bj,…,bm} 变换的要求是能够无失真或无差错地由Y恢复X,也就是能正确地进行反变换或译码,同时希望传送Y时所需的信息率最小。由于Yk可取m种可能值,即平均每个符号输出的最大信息量为logm,KL长码字的最大信息量为KLlogm。用该码字表示L长的信源序列,则送出一个信源符号所需的二进制码字长度平均为=KLLlogm=1LlogM,其中M=mKL是Y所能编成的码字个数。所谓信息率最小,就是找到一种编码方式,使KLLlogm最小。然而上述最小信息率为多少,才能得到无失真的译码?若小于这个信息率是否还能无失真地译码?这就是无失真信源编码定理要研究的内容。无失真信源编码定理包括定长编码定理和变长编码定理,下面分别加以讨论。 5.2.1定长编码 在定长编码中,各码字长度Ki为定值,且Ki=KL。编码的目的是寻找最小KL值。要实现无失真的信源编码,不但要求信源符号Xi,i=1,2,…,q与码字Yi,i=1,2,…,q是一一对应的,而且要求由码字组成的码符号序列的逆变换也是唯一的。也就是说,由一个码表编出的任意一串有限长的码符号序列只能被唯一地译成对应的信源符号序列。 定长编码定理: 由L个符号组成的每个符号的熵为HL(X)的无记忆平稳信源符号序列X1,X2,…,Xl,…,XL,可用KL个符号Y1,Y2,…,Yk,…,YKL(每个符号有m种可能值)进行定长编码。对于任意ε>0,δ>0,只要 KLLlogm≥HL(X)+ε(521) 则当L足够大时,必可使译码差错小于δ; 反之,当 KLLlogm≤HL(X)-2ε(522) 时,译码差错一定为有限值,而当L足够大时,译码几乎必定出错。 这个定理的前半部分是正定理,后半部分为逆定理。定理证明略。 上述编码定理说明,当编码器容许的输出信息率,即每个信源符号必须输出的平均码长是 =KLLlogm(523) 时,只要>HL(X),这种编码器可以做到几乎无失真,也就是接收端的译码差错概率接近零,条件是所取的符号数L足够大。 将上述定理的条件式(521)改写为 KLlogm>LHL(X)=H(X)(524) 上式大于号左边为KL长码字所能携带的最大信息量,右边为L长信源序列携带的信息量。于是上述定理表明,只要码字所能携带的信息量大于信源序列输出的信息量,就可以使传输几乎无失真,当然条件是L足够大。 反之,当0(527) 编码定理从理论上阐明了编码效率接近1的理想编码器的存在性,使输出符号的信息率与信源熵之比接近1,即 HL(X)KLLlogm→1(528) 但要在实际中实现,必须取无限长(L→∞)的信源符号进行统一编码。这样做实际上是不可能的,因L非常大,无法实现。下面用例子来说明。 例52设离散无记忆信源概率空间为 XP=a1a2a3a4a5a6a7a80.40.180.10.10.070.060.050.04 信源熵为 H(X)=-∑8i=1pilogpi=2.55bit/符号 对信源符号采用定长二元编码,要求编码效率为η=90%,若取L=1,则可算出 =2.55÷90%=2.8bit/符号,22.88=6.96种 即每个符号用2.8bit进行定长二元编码,共有6.96种可能性,即使按7种可能性来算,信源符号中也有一种符号没有对应的码字,取概率最小的a8,差错概率为0.04,显然太大。现采用式(527),有 η=H(X)H(X)+ε=0.90 可以得到ε=0.28 信源序列的自信息方差为 σ2(X)=D[I(xi)]=∑8i=1pi(logpi)2-[H(X)]2=1.32(bit)2 若要求译码错误概率δ≤10-6,由式(526)得 L≥σ2(X)ε2δ=1.320.282×10-6=1.68×107 由此可见,在对编码效率和译码错误概率的要求不太苛刻的情况下,需要L=1.68×107个信源符号一起进行编码,这对存储或处理技术的要求太高,目前还无法实现。 如果用3bit对上述信源的8个符号进行定长二元编码,L=1,则=H(X)+ε=3,可求得ε=0.45。此时译码无差错,即δ=0。在这种情况下,式(526)就不适用了。但此时编码效率只有η=2.553=85%。因此一般来说,当L有限时,高传输效率的定长码往往要引入一定的失真和错误,它不像变长码那样可实现无失真编码。 5.2.2变长编码 在变长编码中,码长Ki是变化的,可根据信源各个符号的统计特性,如概率大的符号用短码,例52中的a1、a2可用1bit或2bit,而概率小的a7、a8可用较长的码,这样在大量信源符号编成码后,平均每个信源符号所需的输出符号数就可以降低,从而提高编码效率。下面分别给出单个符号(L=1)和符号序列的变长编码定理。 单个符号变长编码定理: 若离散无记忆信源的符号熵为H(X),每个信源符号用m进制码元进行变长编码,一定存在一种无失真编码方法,其码字平均长度满足下列不等式 H(X)logm≤HL(X)HL(X)+logmL(5211) 例如用二进制,m=2,log2m=1,仍用前面的例52,H(X)=2.55bit/符号,若要求η>90%,则 2.552.55+1L=0.9,L=10.28≈4 就可以了。 另外,由信源平均符号熵HL(X)与平均符号码长之比可以得到平均每个二元码符号所含的信息量,定义为信息传输效率R,单位是bit/二元码符号,即 R=HL(X)(5212) 例53设离散无记忆信源的概率空间为 XP=a1a23414 其信源熵为 H(X)=14log4+34log43=0.811bit/符号 用二元定长编码(0,1)构造一个即时码: a1→0,a2→1。这时平均码长 =1二元码符号/信源符号 编码效率 η=H(X)=0.811 信息传输效率 R=0.811bit/二元码符号 再对长度为2的信源序列进行变长编码(编码方法后面介绍),其即时码如表52所示。 表52L=2时信源序列的变长编码 序列 序 列 概 率 即时码 a1a19/160 a1a23/1610 a2a13/16110 a2a21/16111 这个码的码字平均长度 2=916×1+316×2+316×3+116×3=2716二元码符号/信源序列 每一单个符号的平均码长 =22=2732二元码符号/信源符号 其编码效率 η2=32×0.81127≈0.961 信息传输效率 R2=0.961bit/二元码符号 可见编码复杂了一些,但信息传输效率有了提高。 用同样的方法可进一步增加信源序列的长度,L=3或L=4,对这些信源序列X进行编码,并求出其编码效率分别为 η3=0.985η4=0.991 这时信息传输效率分别为 R3=0.985bit/二元码符号 R4=0.991bit/二元码符号 如果对这一信源采用定长二元码编码,要求编码效率达到96%,允许译码错误概率δ≤10-5,则根据式(528),自信息的方差 σ2(X)=∑2i=1pi(logpi)2-[H(X)]2=0.4715(bit)2 所需要的信源序列长度 L≥0.4715(0.811)2·(0.96)20.042×10-5≈4.13×107 很明显,定长码需要的信源序列长,导致码表较大,且总存在译码差错。而变长码要求编码效率达到96%时,只需L=2。因此用变长码编码时,L不需要很大就可达到相当高的编码效率,而且可实现无失真编码。随着信源序列长度的增加,编码的效率越来越接近1,编码后的信息传输效率R也越来越接近无噪无损二元对称信道的信道容量C=1bit/二元码符号,实现信源与信道匹配,使信道得到充分利用。 由变长编码定理可以看出,要使信源编码后的平均码长最短,就要求信源中每个符号的码长与其概率相匹配,即概率大的信息符号编以短的码字,概率小的信息符号编以长的码字。由于符号的自信息量I(xi)就是基于概率计算得到的该符号含有的信息量,因此,将式(529)中的信源熵和平均码长替换为每个信源符号的自信息量I(xi)和码长Ki,就可得到一种构造最佳码长的编码方法,称为香农编码。 香农第一定理指出,选择每个码字的长度Ki满足下式: I(xi)≤KiR(D)时,只要信源序列长度L足够长,一定存在一种编码方法,其译码失真小于或等于D+ε,其中ε为任意小的正数。反之,若R0,每个信源符号的平均码长满足 R(D)≤A)=P(V<-A)=φ(-A)(546) 式中,φ(-A)是误差函数,可查表得其数值。 如果式(541)成立,则E[U]=0。设起始时存储器处半满状态,而存储器容量为2Aσu,可由式(546)求得溢出概率和取空概率。因V>A,即U>Aσu,存储器将溢出; 而V<-A,即U<-Aσu,存储器取空。这就是说,如果要求这些概率都小于φ(-A),存储器容量应大于2Aσu。例如,要求溢出概率和取空概率都小于0.001,查表得A应为3.08,则存储器容量C应为 C>6.16Nσ(547) 当式(541)不成立时,存储器容量还要增加,起始时存储器也不应处于半满状态。例如,若Rt>S,则平均来说,输出大于输入,易被取空,起始状态可超过半满; 反之,若Rt2),即可得一般的递推公式 P(S,ar)=P(S)+p(S)Pr(5411) 及序列的概率公式 p(S,ar)=p(S)pr 对于有相关性的序列,上面的两个递推公式也是适用的,只是上式中的单符号概率应变为条件概率。用递推公式可逐位计算序列的累积概率,而不用像式(5410)那样列举所有排在前面的序列概率。 从以上关于累积概率P(S)的计算中可看出,P(S)将区间[0,1)分割为许多小区间,每个小区间的长度等于各序列的概率p(S),而该小区间内的任一点可用于代表该序列,现在讨论如何选择这个点。令 L=log1p(S)(5412) 其中 代表大于或等于的最小整数。将累积概率P(S)写为二进位的小数,取其前L位,以后如果有尾数,就进位到第L位,这样得到一个数C。例如,P(S)=0.10110001,p(S)=1/17,则L=5,得C=0.10111。这个C就可作为S的码字。因为C不小于P(S),至少等于P(S)。又由式(5412)可知p(S)≥2-L。令(S+1)为按顺序正好在S后面的一个序列,则 P(S+1)=P(S)+p(S)≥P(S)+2-L>C 当P(S)在第L位以后且没有尾数时,P(S)就是C,上式成立; 如果有尾数,该尾数就是上式的左右两侧之差,所以上式也成立。由此可见,C必在P(S+1)和P(S)之间,也就是在长度为p(S)的小区间(左闭右开的区间)内,因而是可以唯一译码。这样构成的码字,编码效率很高,已可达到概率匹配,尤其是当序列很长时。由式(5412)可见,对于长序列,p(S)必然很小,L与概率倒数的对数已几乎相等,也就是取整数造成的差别很小,平均代码长度接近S的熵值。 实际应用中,采用累积概率P(S)表示码字C(S),符号概率p(S)表示状态区间A(S),则有 C(S,r)=C(S)+A(S)PrA(S,r)=A(S)pr(5413) 对于二进制符号组成的序列,r=0,1。 实际编码过程如下。先置定两个存储器,起始时可令 A(φ)=1,C(φ)=0 其中,φ代表空集,即起始时码字为0,状态区间为1。每输入一个信源符号,存储器C和A就按照式(5413)更新一次,直至信源符号输入完毕,就可将存储器C的内容作为该序列的码字输出。由于C(S)是递增的,而增量A(S)Pr随着序列的增长而减小,因为状态区间A(S)越来越小,与信源单符号的累积概率Pr的乘积就越来越小。所以C的前面几位一般已固定,在以后的计算中不会被更新,因而可以边计算边输出,只需保留后面几位用作更新。 译码也可逐位进行,与编码过程相似。 例59有4个符号a、b、c、d构成的简单序列S=abda,各符号及其对应概率如表57所示。 表57各符号及其对应概率 符号 符号概率pi 符号累积概率Pj a0.100(1/2)0.000 b0.010(1/4)0.100 c0.001(1/8)0.110 d0.001(1/8)0.111 算术编解码过程如下。 设起始状态为空序列φ,则A(φ)=1,C(φ)=0。 递推得 C(φa)=C(φ)+A(φ)Pa=0+1×0=0A(φa)=A(φ)pa=1×0.1=0.1 C(a,b)=C(a)+A(a)Pb=0+0.1×0.1=0.01A(a,b)=A(a)pb=0.1×0.01=0.001 C(a,b,d)=C(a,b)+A(a,b)Pd=0.01+0.001×0.111=0.010111A(a,b,d)=A(a,b)pd=0.001×0.001=0.000001 C(a,b,d,a)=C(a,b,d)+A(a,b,d)Pa=0.010111+0.000001×0=0.010111A(a,b,d,a)=A(a,b,d)pa=0.000001×0.1=0.0000001 计算该序列的编码码长,根据式(5412),有 L=log1A(a,b,d,a)=7 得码长为7,取C(a,b,d,a)小数点后7位,即为编码后的码字0101110。上述编码过程如图59所示,可用对单位区间的划分来描述。 图59算术码编码过程 该信源的熵 H(X)=-12log12-14log14-2×18log18=1.75bit/符号 编码效率 η=1.757/4=100% 译码可通过比较上述编码后的数值大小进行,即判断码字C(S)落在哪个区间,就可以得出一个相应的符号序列。据递推公式的相反过程译出每个符号。步骤如下。 (1) C(a,b,d,a)=0.0101110<0.1∈[0,0.1],第1个符号为a。 (2) 放大至[0,1](×p-1a),得C(a,b,d,a)×21=0.10111∈[0.1,0.110],第2个符号为b。 (3) 去掉累积概率Pb,得0.10111-0.1=0.00111。 (4) 放大至[0,1](×p-1b): 0.00111×22=0.111 ∈[0.111,1],第3个符号为d。 (5) 去掉累积概率Pd,得0.111-0.111=0。 (6) 放大至[0,1](×p-1d),得0×23=0 ∈[0,0.1],第4个符号为a。 实际的编译码过程比较复杂,但原理相同。从性能上看算术编码具有许多优点,特别是所需的参数很少,不像哈夫曼编码那样需要很大的码表。由于二元信源的编码实现比较简单,我国最早将其应用于报纸传真的压缩设备,获得了良好的效果。从理论上说,只要已知信源符号集及其符号概率,算术编码的平均码长可以接近符号熵。因而在实际编码时,需要预先对信源输入符号的概率进行估计,估计的精准程度将直接影响编码性能。但是事先知道精确的信源符号概率是很难的,而且是不切实际的。算术编码可以是静态的或自适应的。在静态算术编码中,信源符号的概率是固定的。而对于一些信源概率未知或非平稳的情况,常设计为自适应算术编码,在编码的过程中根据信源符号出现的频繁程度动态地修正符号概率。 5.4.3矢量量化编码 连续信源进行编码的主要方法是量化,即将连续的样值x离散化为yi,i=1,2,…,n。n是量化级数,yi是某些实数。这样就把连续值转化为了n个实数,可用0,1,…,n-1共n个数字表示。离散信源也会涉及量化问题,比如,当提供的量化级数少于原来的量化级数时,需要对该信源信号进行再次量化。在上述这些量化中,由于x是一个标量,因此称为标量量化。矢量量化就是使若干个标量数据组形成一个矢量,然后在矢量空间进行整体量化,从而压缩数据。量化会引入失真,所以矢量量化是一种限失真编码,量化时必须使这些失真最小。正如前面的编码定理中看到的,将离散信源的多个符号联合编码可提高效率。连续信源也是如此,当把多个信源符号联合起来形成多维矢量,再对矢量进行标量量化时,可以充分利用各分量间的统计依赖性,同样的失真下,量化级数可进一步减少,码率可进一步压缩。在维数足够高时,矢量量化编码可以任意接近率失真理论给出的极限。 矢量量化编码的原理是,输入k维随机矢量Xi=(xi1,xi2,…,xik),通过一个矢量量化器Q(X),映射为对应的k维输出矢量Yi=(yi1,yi2,…,yik)。Y={Y1,Y2,…,YN},有N种矢量组成的集合Y称为码书或码本。它实际上是一个长度为N的表,表中的每个分量Yi都是一个k维矢量,称为码字或码矢。码书中码字的数量称为码书的尺寸。矢量编码的过程就是在码书Y 中搜索一个与输入矢量Xi最接近的码字Yi,Yi就是Xi的矢量量化值。传输时,只需传输码字Yi的下标i。在接收端解码器中,有一个与发送端相同的码书Y,根据接收的标号i可简单地用查表法找到对应的矢量Yi作为Xi的近似。当码书尺寸为N时,传输矢量下标所需的比特数为log2N,平均传输矢量中一维信号所需的比特数为(1/k)log2N。若k=16,N=256,则比特率为0.5bit/维。 从编码原理中可以看出,矢量量化编码的关键技术是码书设计和码字搜索。 1. 码书设计 矢量量化的码书设计是将k维空间无遗漏地划分为N个互不相交的子空间S1,S2, …,SN,并在每个子空间中找出一个最佳矢量Yi作为输出码字。码书的优化直接影响压缩效率和数据恢复质量。在接收端以量化值Yi再现Xi,必然存在失真,需要满足d(Xi,Yi)=min d(Xi,Yj),j=1,2,…,N,其中d(Xi,Yi)是输入矢量Xi与码字Yi之间的失真测度。一般可以采用均方误差衡量失真测度,即 dXi,Yi=∑kj=1(xij-yij)2 整个信号的平均失真为 D=EdX,Yi=∑Ni=1EdX,Yi,X∈Si D为每个子空间失真的统计平均,可作为衡量恢复信号质量的指标。解码失真的大小主要由码书的质量决定。码书设计的过程就是寻求将M个训练矢量分为N(N