Lempel-Ziv算法 具体过程

例:

110110001101

第一步:求phrases


取1

110110001101第二个应该取1 但是1已经在前面有了 故后退一位 取10

110110001101第三个应该取1 但是前面已经有1了 继续后退一位 取11

以此类推

取得1,10,11,0,00,110,1


X={0,1},J=2(只有0和1)。


第二步:求m


1.第一位1,在前面没有重复,m=0

2.第二位10,取10是因为10中的11中的1重复 所以m=1

3.第三位11,取11 是因为11中的1已经在第1次被取到了,所以m=1

4.第四位0,前面没有重复 m=0

5.第五位00,取00是因为00中的04中已经有0了 所以m=4

6.第六位110,取110是因为11011中已经取了,再往后一位11已经在3中取了,所以m=3

7.第七位1这个是单独的1, 1中的1不一样,m=0


第三步:求j

j就是第一步中所求字符的末位

j={1,0,1,0,0,0,1}


第四步:求length

i=11
i=210
i=311
i=40
i=500
i=6110
i=71

length=log J (i) 向上取整 +1 

即以J为底,i 的对数,加一

在这里J=2(看第一步)


phraselength
11
102
113
03
004
1104
14

第五步:求codewords


十进制codewords=m * J + j

i           codewords
11
22
33
40
58
66
71

最后把codewords转换为J进制 在这里就是2进制 再把codewords变为指定length长度 长度不够用0补齐


i        lengthcodewords
111
2210
33011
43000
541000
640110
740001

编码完成 看得很晕

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值