请研读以下程序对每一行进行注释说出这个程序的功能:function arcode=arencsymbolprseqin算术编码子程序:输入字符行向量symbol、字符出现的概率pr、待编码字符串seqinhigh_range=;for k=1lengthpr high_range=high_range sumpr1k;endlow_range=0 high_range1lengthpr-1;
该程序是一个算术编码的实现。其中,arenc函数用于对输入的字符串进行编码,ardec函数用于对输入的编码进行解码。具体实现如下:
- arenc函数
第1行:定义函数名arenc,输入参数为symbol、pr、seqin,输出参数为arcode。
第2行:初始化一个空向量high_range。
第3-4行:对pr进行累加,得到每个symbol的高区间。
第5行:初始化一个空向量low_range,并将其赋值为0和high_range的前length(pr)-1个元素。
第6-9行:对seqin中的每个字符,记录其在symbol中的位置,保存在sbidx向量中。
第10-11行:初始化low和high的值为0和1。
第12-17行:对seqin中的每个字符,计算其对应的区间,更新low和high的值。
第18-23行:初始化一个长度为M的向量lable,并将number初始化为0。
第24-37行:对lable的每个元素依次进行计算,得到编码序列。
第38行:输出编码结果arcode。
- ardec函数
第1行:定义函数名ardec,输入参数为symbol、pr、codestring、symlen,输出参数为symseq。
第2行:初始化codeword的值为0。
第3-4行:对pr进行累加,得到每个symbol的高区间。
第5行:初始化一个空向量low_range,并将其赋值为0和high_range的前length(pr)-1个元素。
第6行:计算pr的最小值。
第7行:初始化symseq为空向量。
第8-19行:对codestring中的每一位进行处理,得到解码序列。
第20行:输出解码结果symseq
原文地址: http://www.cveoy.top/t/topic/hwqs 著作权归作者所有。请勿转载和采集!