A律编码(A-law )是ITU-T(国际电联电信标准局)CCITT G.712定义的关于脉冲编码的一种压缩/解压缩算法。 世界上大部分国家采用A律压缩算法。美国采用mu律算法进行脉冲编码。 令量化器过载电压为1,相当于把输入信号进行归一化,那么A律对数压缩我定义为 当0 <= x <= 1/A时,f(x)=(Ax)/(1+lnA) 当1/A <= x <= 1时,f(x)=(1+lnAx)/(1+lnA)
中文名称 | A律编码 | 外文名称 | A-law |
---|---|---|---|
定义 | 脉冲编码的一种压缩/解压缩算法 | 国际标准 | A=87.6 |
用折线实现压扩特性,它既不同于均匀量化的直线,又不同于对数压扩特性的光滑曲线。虽然总的来说用折线作压扩持性是非均匀量化,但它既有非均匀(不同折线有不同斜率)量化,又有均匀量化(在同一折线的小范围内)。有两种常用的数字压扩技术,一种是13折线A律压扩,它的特性近似A=87.6的A律压扩特性。另一种是15折线μ律压扩,其特性近似μ=255的μ律压扩特性。下面将主要介绍13折线A律压扩技术,简称13折线法。关于15折线μ律压扩请读者阅读有关文献。
A律编码图例
图中展示了这种13折线A律压扩特性。 从图6-12中可以看到,先把轴的0~1分为8个不均匀段,其分法是:将0~1之间一分为二,其中点为1/2,取1/2~1之间作为第八段;剩余的0~1/2再一分为二,中点为1/4,取1/4~1/2之间作为第七段,再把剩余的0~1/4一分为二,中点为1/8,取1/8~1/4之间作为第六段,依此分下去,直至剩余的最小一段为0~1/128作为第一段。而轴的0~1均匀地分为八段,它们与轴的八段一一对应。从第一段到第八段分别为,0~1/8,1/8~2/8,…,7/8~1。这样,便可以作出由八段直线构成的一条折线。该折线与式(6-22)表示的压缩特性近似。
至于当在-1~0及在-1~0的第三象限中,压缩特性的形状与以上讨论的第一象限压缩待性的形状相同,且它们以原点奇对称,所以负方向也有八段直线,合起来共有16个线段。由于正向一、二两段和负向一、二两段的斜率相同,这四段实际上为一条直线,因此,正、负双向的折线总共由13条直线段构成,故称其为13折线。
将16位的线性PCM编码转为8位的A律码如下的准则
Linear Input Code Compressed Code
------------------------ ---------------
0000000wxyza 000wxyz
0000001wxyza 001wxyz
000001wxyzab 010wxyz
00001wxyzabc 011wxyz
0001wxyzabcd 100wxyz
001wxyzabcde 101wxyz
01wxyzabcdef 110wxyz
1wxyzabcdefg 111wxyz
在现行的国际标准中A=87.6,此时信号很小时(即小信号时),从上式可以看到信号被放大了16倍,这相当于与无压缩特性比较,对于小信号的情况,量化间隔比均匀量化时减小了16倍,因此,量化误差大大降低;而对于大信号的情况例如x=1/A,量化间隔比均匀量化时增大了5.47倍,量化误差增大了。这样实际上就实现了"压大补小"的效果。
上面只讨论了x>0的范围,实际上x和y均在[-1,1]之间变化,因此,x和y的对应关系曲线是在第一象限与第三象限奇对称。为了简便,x<0的关系表达式未进行描述,但对上式进行简单的修改就能得到。
按上式得到的A律压扩特性是连续曲线,A的取值不同其压扩特性亦不相同,而在电路上实现这样的函数规律是相当复杂的。为此,人们提出了数字压扩技术,其基本思想是这样的:利用大量数字电路形成若干根折线,并用这些折线来近似对数的压扩特性,从而达到压扩的目的。
序号 物料编码 型号规格 1 3225040084179578 荧光管 /欧司朗DULUXSTAR CL/7W 2 3225080084179570 金属卤化物灯 /欧司朗HQI-E/涂粉70W 3 3225040082797872 荧光管 /OSRAM DULUXSTAR/TWIST 23W 4 3225040084513150 荧光管 /欧司朗YZ15T8 15W 5 3225040084179582 荧光管 /欧司朗 电子节能灯 DULUXSTAR 32W 6 3225990084534074 节能灯 /欧司朗 24W 7 3213100084566170 日光灯具 欧司朗LMY-36W 8 3213100084179573 日光灯具 欧司朗LMY-2*36W 9 3229990083704157 应急日光灯具 欧司朗LMYyj-1*36W 10 3213100084566
本文介绍基于Revit模型属性的编码方式、编码规则制定方法、模型编码在BIM运维管理中的应用及数据处理应用的思路及实践工作。
这里主要介绍线性编码有关内容
线性编码
术语代数编码理论表示编码原理的子领域,其编码性质以代数术语表示,然后进一步研究 。
代数编码理论基本上分为两大类代码:
线性分组码
卷积码
它分析一个编码的以下三个特性-主要是:
码字长度
有效代码字总数
两个有效代码字之间的最小距离,主要使用汉明距离,有时也使用其他距离像Lee距离。
线性分组码
线性分组码具有的特性的线性度,即,任何两个码字的总和也是一个编码字,并且它们被应用到组的源比特中,因此称为线性分组码。有分组码不是线性的,但是很难证明编码是没有这个属性的编码。
线性分组码由其符号字母(例如,二进制或三元)和参数(n,m,
n是码字的长度,以符号表示,
m是将一次用于编码的源符号的数量,
有许多类型的线性分组码,如循环码(如汉明码)、重复代码、奇偶校验码、多项式编码(例如BCH码)、里德 - 所罗门编码、代数几何编码、里德 - 穆勒编码、完美编码。
编码原理使用N维球体模型。例如,可以在桌面上或三维中将多少便士包装成圆圈,可以将多少个弹珠包装在一个球面上。其他注意事项输入编码的选择。例如,六边形包装成矩形框的约束将在角落留下空的空间。随着尺寸越来越大,空白空间的百分比越来越小。但是在某些维度上,包装使用所有空间,这些代码是所谓的“完美”代码。唯一非常重要和有用的完美编码是距离为3汉明码,其参数满足(2 r - 1,2 r - 1 - r,3)和[23,12,7]二进制和[11,6,5 ]三重Golay码。
另一个编码属性是单个码字可能具有的邻居的数量。再次,以便士为例。首先我们把便士打包成矩形网格。每一分钱将有4个邻近的邻居(在距离更远的角落有4个)。在六边形,每一分钱将有6个近邻。当我们增加尺寸时,近邻的数量增加非常快。结果是使接收端选择邻居(因此错误)的噪声的方式也增加。这是分组码以及所有编码的基本限制。可能更难对单个邻居造成错误,但邻居数量可能足够大,因此总错误概率实际上会受到影响。
线性分组码的属性可以应用于很多应用。例如,线性分组码的校正子集合唯一性被用网格成形,是最有名的形状码之一。传感器网络中使用相同的属性进行分布式源代码编码。
卷积码
如果特定的一致监督关系不是在一个码字中实现,而是在个码字中实现,这种码称为卷积码。卷积码可用移位寄存器来实现,这种卷积编码器的输出可看作是输入信息码元序列与编码器响应函数的卷积。能纠正突发错误的哈格伯尔格码也是一种卷积码。在平稳高斯噪声干扰的信道上采用序贯译码方法的卷积码有很好的性能,能用于卫星通信和深空通信。
UTF-8 编码原理
为了统一全世界各国语言文字和专业领域符号(例如数学符号、乐谱符号)的编码,ISO制定了ISO 10646标准,也称为UCS(Universal Character Set)。UCS编码的长度是31位,可以表示231个字符。如果两个字符编码的高位相同,只有低16位不同,则它们属于一个平面(Plane),所以一个平面由216个字符组成。目前常用的大部分字符都位于第一个平面(编码范围是U-00000000~U-0000FFFD),称为BMP(Basic Multilingual Plane)或Plane 0,为了向后兼容,其中编号为0~256的字符和Latin-1相同。UCS编码通常用U-xxxxxxxx这种形式表示,而BMP的编码通常用 U xxxx这种形式表示,其中x是十六进制数字。在ISO制定UCS的同时,另一个由厂商联合组织也在着手制定这样的编码,称为Unicode,后来两家联手制定统一的编码,但各自发布各自的标准文档,所以UCS编码和Unicode码是相同的。
有了字符编码,另一个问题就是这样的编码在计算机中怎么表示。现在已经不可能用一个字节表示一个字符了,最直接的想法就是用四个字节表示一个字符,这种表示方法称为UCS-4或UTF- 32,UTF是Unicode Transformation Format的缩写。一方面这样比较浪费存储空间,由于常用字符都集中在BMP,高位的两个字节通常是0,如果只用ASCII码或Latin-1,高位的三个字节都是0。另一种比较节省存储空间的办法是用两个字节表示一个字符,称为UCS-2或UTF-16,这样只能表示BMP中的字符,但BMP中有一些扩展字符,可以用两个这样的扩展字符表示其它平面的字符,称为Surrogate Pair。无论是UTF-32还是UTF-16都有一个更严重的问题是和C语言不兼容,在C语言中0字节表示字符串结尾,库函数strlen、 strcpy等等都依赖于这一点,如果字符串用UTF-32存储,其中有很多0字节并不表示字符串结尾,这就乱套了。
UNIX之父Ken Thompson提出的UTF-8编码很好地解决了这些问题,现在得到广泛应用。UTF-8具有以下性质:
* 编码为U 0000~U 007F的字符只占一个字节,就是0x00~0x7F,和ASCII码兼容。
* 编码大于U 007F的字符用2~6个字节表示,每个字节的最高位都是1,而ASCII码的最高位都是0,因此非ASCII码字符的表示中不会出现ASCII码字节(也就不会出现0字节)。
* 用于表示非ASCII码字符的多字节序列中,第一个字节的取值范围是0xC0~0xFD,根据它可以判断后面有多少个字节也属于当前字符的编码。后面每个字节的取值范围都是0x80~0xBF,见下面的详细说明。
* UCS定义的所有231个字符都可以用UTF-8编码表示出来。
* UTF-8编码最长6个字节,BMP字符的UTF-8编码最长三个字节。
* 0xFE和0xFF这两个字节在UTF-8编码中不会出现。
具体来说,UTF-8编码有以下几种格式:
U-00000000 – U-0000007F: 0xxxxxxx
U-00000080 – U-000007FF: 110xxxxx 10xxxxxx
U-00000800 – U-0000FFFF: 1110xxxx 10xxxxxx10xxxxxx
U-00010000 – U-001FFFFF: 11110xxx 10xxxxxx10xxxxxx 10xxxxxx
U-00200000 – U-03FFFFFF: 111110xx 10xxxxxx10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 – U-7FFFFFFF: 1111110x 10xxxxxx10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
第一个字节要么最高位是0(ASCII字节),要么最高两位都是1,最高位之后1的个数决定后面有多少个字节也属于当前字符编码,例如111110xx,最高位之后还有四个1,表示后面有四个字节也属于当前字符的编码。后面每个字节的最高两位都是10,可以和第一个字节区分开。这样的设计有利于误码同步,例如在网络传输过程中丢失了几个字节,很容易判断当前字符是不完整的,也很容易找到下一个字符从哪里开始,结果顶多丢掉一两个字符,而不会导致后面的编码解释全部混乱了。上面的格式中标为x的位就是UCS编码,最后一种6字节的格式中x位有31个,可以表示31位的UCS编码,UTF-8就像一列火车,第一个字节是车头,后面每个字节是车厢,其中承载的货物是UCS编码。UTF-8规定承载的UCS编码以大端表示,也就是说第一个字节中的x是UCS编码的高位,后面字节中的x是UCS编码的低位。
例如U 00A9(©字符)的二进制是10101001,编码成UTF-8是11000010 10101001(0xC2 0xA9),但不能编码成11100000 10000010 10101001,UTF-8规定每个字符只能用尽可能少的字节来编码。
电子产品代码(EPC编码)是国际条码组织推出的新一代产品编码体系。原来的产品条码仅是对产品分类的编码,EPC码是对每个单品都赋予一个全球唯一编码,EPC编码96位(二进制)方式的编码体系。96位的EPC码,可以为2.68亿公司赋码,每个公司可以有1600万产品分类,每类产品有680亿的独立产品编码,形象的说可以为地球上的每一粒大米赋一个唯一的编码。
EPC编码的原则:
1、唯一性 2、简单性 3、可扩展性 4、保密性与安全性
EPC编码关注的问题:
1、生产厂商和产品 2、内嵌信息 3、分类 4、批量产品编码 5、载体
EPC编码结构:
EPC编码数据结构标准规定了EPC数据结构的特征、格式、现有EAN.UCC系统中的GTIN、SSCC、GLN、GRAI、GIAI、GSRN及NPC与EPC编码的转换方式。 EPC编码数据结构标准适用于全球和国内物流供应链各个环节的产品(物品、贸易项目、资产、位置等)与服务等的信息处理和信息交换。
编码原理是对编码的属性及其各自适用于具体应用的方法研究。编码用于数据压缩,加密,纠错和网络。编码在各种科学学科(如信息理论,电气工程,数学,语言学和计算机科学)都有研究 -旨在设计高效可靠的数据传输方法。这通常涉及去除冗余以及发送数据中的错误的校正或检测。实现编码的具体方法和电路很多,方法有低速编码和高速编码、线性编码和非线性编码;电路有逐次比较型、级联型和混合型编码。 编码原理按照应用来分可以分为算术编码原理,音频编码原理、图像编码原理、字符编码原理等。