欢迎来到天天文库
浏览记录
ID:31915470
大小:42.10 KB
页数:8页
时间:2019-01-27
《lzw编码算法matlab实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、LZW编码算法,尝试使用matlab计算%encoderLZWformatlab%yu20170503clc;clear;closeall;%初始字典dic=cell(512,1);fori=1:256dic{i}={num2str(i)};end%输入字符串a,按空格拆分成A,注意加1对应范围1~256a=input('input:','s');a=deblank(a);A=regexp(a,'s+','split');L=length(A);forj=1:LA{j}=num2str(str2num(A{j})+1);endA_t=A{1};%可识别序列B_t='t
2、est';%待验证词条d=256;%字典指针b=1;%输出指针B=cell(L,1);%输出初始output='';%输出初始j=1;forj=2:Lm=1;B_t=deblank([A_t,'',A{j}]);%合成待验证词条while(m<=d)ifstrcmp(dic{m},B_t)A_t=B_t;breakelsem=m+1;endendwhile(m==d+1)d=d+1;dic{d}=B_t;q=1;forq=1:difstrcmp(dic{q},A_t)B{b}=num2str(q);b=b+1;endendA_t=A{j};endendforq=1:d%
3、处理最后一个序列输出ifstrcmp(dic{q},A_t)B{b}=num2str(q);b=b+1;endendforn=1:(b-1)B{n}=num2str(str2num(B{n})-1);output=deblank([output,'',B{n}]);endoutput运算结果计算结果为3939126126256258260259257126LZW解码算法,使用matlab计算%decoderLZWformatlab%yu20170503clc;clear;closeall;%初始字典dic=cell(512,1);fori=1:256dic{i}={nu
4、m2str(i)};end%输入字符串a,按空格拆分成A,注意加1对应范围1~256a=input('input:','s');a=deblank(a);A=regexp(a,'s+','split');L=length(A);forj=1:LA{j}=num2str(str2num(A{j})+1);endB_t=A{1};%待验证词条d=256;%字典指针b=1;%输出指针B=cell(L,1);%输出初始output='';%输出初始j=1;B{b}=char(dic{str2num(A{j})});b=b+1;forj=2:LBB=char(dic{str2n
5、um(A{j})});B_d=regexp(BB,'s+','split');%按空格拆分L_B=length(B_d);p=1;forp=1:L_BB{(b+p-1)}=B_d{p};m=1;B_t=deblank([char(B_t),'',char(B_d{p})]);%合成待验证词条while(m<=d)ifstrcmp(dic{m},B_t)B_t=B_t;breakelsem=m+1;endendwhile(m==d+1)d=d+1;dic{d}=B_t;B_t=B_d{p};endendb=b+L_B;endforn=1:(b-L_B)B{n}=num2
6、str(str2num(B{n})-1);output=deblank([output,'',B{n}]);endoutput运算结果运算结果为3939126126393912612639391261263939126126
此文档下载收益归作者所有