当前位置:   article > 正文

算术编码(matlab)上课实验_function arcode=arenc(symbol,pr,seqin) %算术编码子程序:输入

function arcode=arenc(symbol,pr,seqin) %算术编码子程序:输入字符行向量symbol

clear all
format long
symbol='abcd';
pr=[0.1 0.4 0.2 0.3];
seqin='aabccddcd';
codeword=arenc(symbol,pr,seqin);
 

function arcode=arenc(symbol,pr,seqin) 
%算术编码
%输出:码串
%输入:symbol:字符行向量
%pr:字符出现的概率
%seqin:代编码字符串
high_range=[];
for k=1:length(pr)
    high_range=[high_range sum(pr(1:k))];
end
low_range=[0 high_range(1:length(pr)-1)]
sbidx=zeros(size(seqin))
for i=1:length(seqin)
    sbidx(i)=find(symbol==seqin(i))
end
low=0
high=1
for i=1:length(seqin),
    range=high-low
    high=low+range*high_range(sbidx(i));
    low=low+range*low_range(sbidx(i));
end
arcode=low;

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/484021
推荐阅读
相关标签
  

闽ICP备14008679号