首页 > 编程知识 正文

信源编码的方法,香农编码例题

时间:2023-05-05 12:10:33 阅读:61141 作者:597

香农编码步骤:源符号在概率上按照从大到小的顺序排序; 用-log2Pai=Ki 1-log2Pai整形得到第I个代码的代码长度; 计算第I个符号的累积概率的累积概率为二进制的小数,取Ki比特的代码长度。 c程序# include iostream # include list # includecmathusingnamespacestd; int main () { int i,number; 列表双电子元件; 双精度模板; 列表k; int ki; 双精度p=0; //累计概率cout '输入符号数: '; cin number; cout '逐个输入符号概率:' endl; for(I=0; inumber I ) { cin temp; ELEMS.push_back(temp; (} elems.sort ); elems.reverse (排序; listdouble:iterator it; 用//迭代器cout '符号对代码长度:' endl进行排序和计算的for(it=Elems.Begin ); it!=elems.end (; it}{cout*it '; ki=--(log(it )/log(2)2) ) 1; cout '代码长度' ki endl; k.push_back(ki; } /*概率二进制*/listint:iterator k_it; k_it=k.begin (; for(it=Elems.Begin ); it!=elems.end (; it ) intj=0; temp=p; cout '概率: ' *it 't累计概率: ' p 't对应代码: '; while(1) { temp=temp*2; if(temp=1) { cout '1); temp=temp -1; }else{ cout '0'; (j; if(j==*k_it ) break; } cout endl; k_it; p =*it; }返回0; }运行结果

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。