www.gusucode.com > 图像压缩编码码matlab实现 > 图像压缩编码码matlab实现/算术编码/arencode.m

    function arcode = arencode(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;