您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > LZW编码(基于MATLAB)
%读取编码文件和输出文件fid_input=fopen('C:\Users\Administrator\Desktop\matlab\ssby.txt');%打开要编码的数据所在文件fid_output=fopen('C:\Users\Administrator\Desktop\matlab\shuchu.txt','w');%打开压缩后的数据所在文件D=fscanf(fid_input,'%c');%读取数据D_Length=size(D,2);%获取数据长度zidian='';%字典changdu=1;%字典长度zhizhen=1;%字典位置指针mabiao=256;%字典码表X1='';%要查找的新字符X='';%当前字符weizifu='';%尾字符duqu=D(1);%读入一个新字符weizifu=duqu;X=weizifu;fori=2:D_Lengthduqu=D(i);%读入一个新字符weizifu=duqu;X1=[X,weizifu];ifi2fori1=1:changduifstrcmp(zidian(i1),X1)==1%字典中已有W1Find_W1=1;%字典中找到W1break;%弹出endFind_W1=0;endifFind_W1==1||size(X1,2)==1%字典中找到W1,做一下W和W1的变换则返回X=X1;continue;endend%输出Wa=dec2hex(0);ifi==2temp=dec2hex(abs(X));shuchu=[a,temp];endifi2ifsize(X,2)==1%如果得到是一个字符temp=dec2hex(abs(X));shuchu=[shuchu,a,temp];elsefori2=1:changduifstrcmp(zidian(i2),X)==1%找到字典中的Wshuchu=[shuchu,dec2hex(mabiao(i2))];break;%弹出endendendend%保存W1到字典里ifi==2zidian=[{X1}];%初始化字典changdu=1;Dict_CodeTable=256;elsezidian=[zidian,X1];mabiao=[mabiao,mabiao(changdu)+1];changdu=changdu+1;endX=duqu;end%输出最后一个Wifsize(X,2)==1%如果得到是一个字符temp=dec2hex(abs(X));shuchu=[shuchu,a,temp];elsefori2=1:changduifstrcmp(zidian(i2),X)==1%找到字典中的Wshuchu=[shuchu,dec2hex(mabiao(i2))];break;%弹出endendendfprintf(fid_output,shuchu);fclose(fid_input);fclose(fid_output);
本文标题:LZW编码(基于MATLAB)
链接地址:https://www.777doc.com/doc-5568293 .html