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
结果:
版权声明:本文为博主原创文章,未经博主允许不得转载。