资源描述:
《实验二 LZW编码算法的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验二LZW编码算法的实现一、实验目的1、学习Matlab软件的使用和编程2、进一步深入理解LZW编码算法的原理二、实验内容阅读Matlab代码,画原理图。三、实验原理LZW算法中,首先建立一个字符串表,把每一个第一次出现的字符串放入串表中,并用一个数字来表示,这个数字与此字符串在串表中的位置有关,并将这个数字存入压缩文件中,如果这个字符串再次出现时,即可用表示它的数字来代替,并将这个数字存入文件中。压缩完成后将串表丢弃。如"print"字符串,如果在压缩时用266表示,只要再次出现,均用266表示,并将"print"字符串存入串表
2、中,在图象解码时遇到数字266,即可从串表中查出266所代表的字符串"print",在解压缩时,串表可以根据压缩数据重新生成。四、LZW编码的Matlab源程序及运行结果functionlzw_test(binput)if(nargin<1)binput=false;elsebinput=true;end;ifbinputn=0;while(n==0)P=input('pleaseinputastring:','s')%提示输入界面n=length(P);end;else%TeststhespecialdecodercaseP='A
3、notherproblemonlongfilesisthatfrequentlythecompressionratiobegins...';end;lzwInput=uint8(P);[lzwOutput,lzwTable]=norm2lzw(lzwInput);[lzwOutput_decode,lzwTable_decode]=lzw2norm(lzwOutput);fprintf('');fprintf('Input:');%disp(P);%fprintf('%02x',lzwInput);fprintf('%s',nu
4、m2str(lzwInput));fprintf('');fprintf('Output:');%fprintf('%02x',lzwOutput);fprintf('%s',num2str(lzwOutput));fprintf('');fprintf('Output_decode:');%fprintf('%02x',lzwOutput);fprintf('%s',num2str(lzwOutput_decode));fprintf('');fprintf('');forii=257:length(lzwTabl
5、e.codes)fprintf('Output_encode---Code:%s,LastCode%s+%sLength%3d',num2str(ii),num2str(lzwTable.codes(ii).lastCode),...num2str(lzwTable.codes(ii).c),lzwTable.codes(ii).codeLength)fprintf('Output_decode---Code:%s,LastCode%s+%sLength%3d',num2str(ii),num2str(lzwTable_de
6、code.codes(ii).lastCode),...num2str(lzwTable_decode.codes(ii).c),lzwTable_decode.codes(ii).codeLength)end;function[output,table]=lzw2norm(vector,maxTableSize,restartTable)%LZW2NORMLZWDataCompression(decoder)%Forvectors,LZW2NORM(X)istheuncompressedvectorofXusingtheLZWal
7、gorithm.%[...,T]=LZW2NORM(X)returnsalsothetablethatthealgorithmproduces.%%Formatrices,X(:)isusedasinput.%%maxTableSizecanbeusedtosetamaximumlengthofthetable.Default%is4096entries,useInfforunlimited.Usualsizesare12,14and16%bits.%%IfrestartTableisspecified,thenthetableis
8、flushedwhenitreaches%itsmaximumsizeandanewtableisbuilt.%%Inputmustbeofuint16type,whiletheoutputisauint8.%Tableisacell