matlab实现算术编解码 分类: 图像处理 2014-06-01 23:01 357人阅读 评论(0) 收藏
利用Matlab实现算术编解码过程,程序如下: clc,clear all; symbol=[\'abc\']; pr=[0.4 0.4 0.2]; %各字符出现的概率 temp=[0.0 0.4 0.8 1.0]; orignal=temp; in=input(\'input a string of abc:\'); n=length(in); %编码 for i=1:n width=temp(4)-temp(1); w=temp(1); switch in(i) case \'a\' m=1; case \'b\' m=2; case \'c\' m=3; otherwise error(\'do not input other character\'); end temp(1)=w+orignal(m)*width; temp(4)=w+orignal(m+1)*width; left=temp(1); right=temp(4); fprintf(\'left=%.6f\',left); fprintf(\' \'); fprintf(\'right=%.6f\n\',right); end encode=(temp(1)+temp(4))/2 %解码 decode=[\'0\']; for i=1:n fprintf(\'tmp=%.6f\n\',encode); if(encode>=orignal(1)& encode<orignal(2)) decode(i)=\'a\'; t=1; elseif(encode>=orignal(2)& encode<orignal(3)) decode(i)=\'b\'; t=2; else decode(i)=\'c\'; t=3; end encode=(encode-orignal(t)); encode=encode/pr(t); end decode
结果:
版权声明:本文为博主原创文章,未经博主允许不得转载。