📄 area.m
字号:
function[low,high,mode] = area(nf,gai)
%--------------------------------------------------------------------------
%此函数是计算数组nf中每个字符的子区间
%基于算术编码的文本压缩,被main.m文件调用
%输出数组low和high记录了每个符号所对应子区间的下限和上限
%输出数组mode记录了概率模型的相关数据
%--------------------------------------------------------------------------
m=length(nf);%计算nf的长度得到,m即为不重复的字符的个数
low(m)=0;high(m)=gai(m);%数组nf中最后一个字符对应的区间:[0,gai(m))
for j=m-1:-1:1 %求不重复的字符所对应区间的上限和下限
low(j)=high(j+1);
%它的下限是后一个字符的上限
high(j)=low(j)+gai(j);
%它的上限是自己的下限加上自己的概率
end
mode(4,m)=0;%初始化4*m数组mode
for j=1:4
for k=1:m
if j==1, mode(j,k)=nf(k);%第1行是不重复的字符
else if j==2, mode(j,k)=low(k);%第2行是对应的下限
else if j==3, mode(j,k)=high(k);%第3行是对应的上限
else if j==4, mode(j,k)=gai(k);%第4行是对应的概率
end
end
end
end
end
end
mode=mode';%把mode转置,得到新的mode
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -