信息论与编码大作业
- 格式:docx
- 大小:196.92 KB
- 文档页数:14
1、有一个二元对称信道,其信道矩阵如下图所示。
设该信道以1500个二元符号/秒的速度传输输入符号。
现有一消息序列共有14000个二元符号,并设在这消息中P(0)=P(1)=1/2。
问从信息传输的角度来考虑,10秒钟内能否将这消息序列无失真地传送完?解答:消息是一个二元序列,且为等概率分布,即P(0)=P(1)=1/2,故信源的熵为H(X)=1(bit/symbol)。
则该消息序列含有的信息量=14000(bit/symbol)。
下面计算该二元对称信道能传输的最大的信息传输速率: 信道传递矩阵为:信道容量(最大信息传输率)为:C=1-H(P)=1-H(0.98)≈0.8586bit/symbol得最大信息传输速率为:Rt ≈1500符号/秒× 0.8586比特/符号 ≈1287.9比特/秒 ≈1.288×103比特/秒此信道10秒钟内能无失真传输得最大信息量=10× Rt ≈ 1.288×104比特 可见,此信道10秒内能无失真传输得最大信息量小于这消息序列所含有的信息量,故从信息传输的角度来考虑,不可能在10秒钟内将这消息无失真的传送完。
2、若已知信道输入分布为等概率分布,且有如下两个信道,其转移概率矩阵分别为:试求这两个信道的信道容量,并问这两个信道是否有噪声?1100.980.020.020.98P ⎡⎤=⎢⎥⎣⎦111122221111222212111122221111222200000000000000000000000000000000P P ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦11222211122222log 4(00)1/()log 42/log 8(000000)2/(),H bit symbol H X bit symbol C C H bit symbol H X C =-===>=-==1解答:(1)由信道1的信道矩阵可知为对称信道故C 有熵损失,有噪声。
信息论与编码课程大作业题目:香农编码学生姓名:******学号:&**********专业班级:*******************2013 年 5 月10 日香农编码1.香农编码的原理/步骤香农第一定理指出了平均码长与信源之间的关系,同时也指出了可以通过编码使平均码长达到极限值,这是一个很重要的极限定理。
如何构造这种码?香农第一定理指出,选择每个码字的长度K i将满足式I(x i)≤K i<I p(x i)+1就可以得到这种码。
这种编码方法就是香农编码。
香农编码步骤如下:(1)将信源消息符按从大到小的顺序排列。
(2)计算p[i]累加概率;(3)确定满足自身要求的整数码长;(4)将累加概率变为二进制数;(5)取P[i]二进制数的小数点后Ki位即为该消息符号的二进制码字。
2. 用C语言实现#include <stdio.h>#include <math.h>#include <stdlib.h>#define max_CL 10 /*maxsize of length of code*/#define max_PN 6 /*输入序列的个数*/typedef float datatype;typedef struct SHNODE {datatype pb; /*第i个消息符号出现的概率*/datatype p_sum; /*第i个消息符号累加概率*/int kl; /*第i个消息符号对应的码长*/int code[max_CL]; /*第i个消息符号的码字*/struct SHNODE *next;}shnolist;datatype sym_arry[max_PN]; /*序列的概率*/void pb_scan(); /*得到序列概率*/void pb_sort(); /*序列概率排序*/void valuelist(shnolist *L); /*计算累加概率,码长,码字*/void codedisp(shnolist *L);void pb_scan(){int i;datatype sum=0;printf("input %d possible!\n",max_PN);for(i=0;i<max_PN;i++){ printf(">>");scanf("%f",&sym_arry[i]);sum=sum+sym_arry[i];}/*判断序列的概率之和是否等于1,在实现这块模块时,scanf()对float数的缺陷,故只要满足0.99<sum<1.0001出现的误差是允许的*/if(sum>1.0001||sum<0.99){ printf("sum=%f,sum must (<0.999<sum<1.0001)",sum);pb_scan();}}/*选择法排序*/void pb_sort(){int i,j,pos;datatype max;for(i=0;i<max_PN-1;i++){max=sym_arry[i];pos=i;for(j=i+1;j<max_PN;j++)if(sym_arry[j]>max){max=sym_arry[j];pos=j;}sym_arry[pos]=sym_arry[i];sym_arry[i]=max;}}void codedisp(shnolist *L){int i,j;shnolist *p;datatype hx=0,KL=0; /*hx存放序列的熵的结果,KL存放序列编码后的平均码字的结果*/p=L->next;printf("num\tgailv\tsum\t-lb(p(ai))\tlenth\tcode\n");printf("\n");for(i=0;i<max_PN;i++){printf("a%d\t%1.3f\t%1.3f\t%f\t%d\t",i,p->pb,p->p_sum,-3.332*log10(p->pb),p ->kl);j=0;for(j=0;j<p->kl;j++)printf("%d",p->code[j]);printf("\n");hx=hx-p->pb*3.332*log10(p->pb); /*计算消息序列的熵*/KL=KL+p->kl*p->pb; /*计算平均码字*/p=p->next;}printf("H(x)=%f\tKL=%f\nR=%fbit/code",hx,KL,hx/KL); /*计算编码效率*/ }shnolist *setnull(){ shnolist *head;head=(shnolist *)malloc(sizeof(shnolist));head->next=NULL;return(head);}shnolist *my_creat(datatype a[],int n){shnolist *head,*p,*r;int i;head=setnull();r=head;for(i=0;i<n;i++){ p=(shnolist *)malloc(sizeof(shnolist));p->pb=a[i];p->next=NULL;r->next=p;r=p;}return(head);}void valuelist(shnolist *L){shnolist *head,*p;int j=0;int i;datatype temp,s;head=L;p=head->next;temp=0;while(j<max_PN){p->p_sum=temp;temp=temp+p->pb;p->kl=-3.322*log10(p->pb)+1;/*编码,*/{s=p->p_sum;for(i=0;i<p->kl;i++)p->code[i]=0;for(i=0;i<p->kl;i++){p->code[i]=2*s;if(2*s>=1)s=2*s-1;else if(2*s==0)break;else s=2*s;}}j++;p=p->next;}}int main(void){shnolist *head;pb_scan();pb_sort();head=my_creat(sym_arry,max_PN); valuelist(head);codedisp(head);}3.运行结果及分析(本程序先定义了码字长度的最大值和信源概率的个数,然后有设定了概率的和的范围。
信息论与编码习题参考答案 第一章 单符号离散信源同时掷一对均匀的子,试求:(1)“2和6同时出现”这一事件的自信息量; (2)“两个5同时出现”这一事件的自信息量; (3)两个点数的各种组合的熵; (4)两个点数之和的熵;(5)“两个点数中至少有一个是1”的自信息量。
解:bitP a I N n P bit P a I N n P c c N 17.536log log )(361)2(17.418log log )(362)1(36662221111616==-=∴====-=∴===⨯==样本空间:(3)信源空间:bit x H 32.436log 3616236log 36215)(=⨯⨯+⨯⨯=∴ (4)信源空间:bitx H 71.3636log 366536log 3610 436log 368336log 366236log 36436log 362)(=⨯⨯+⨯+⨯+⨯⨯=∴++ (5) bit P a I N n P 17.11136log log )(3611333==-=∴==如有6行、8列的棋型方格,若有两个质点A 和B ,分别以等概落入任一方格内,且它们的坐标分别为(Xa ,Ya ), (Xb ,Yb ),但A ,B 不能同时落入同一方格内。
(1) 若仅有质点A ,求A 落入任一方格的平均信息量; (2) 若已知A 已落入,求B 落入的平均信息量; (3) 若A ,B 是可辨认的,求A ,B 落入的平均信息量。
解:bita P a P a a P a I a P A i 58.548log )(log )()(H 48log )(log )(481)(:)1(481i i i i i ==-=∴=-=∴=∑=落入任一格的概率bitb P b P b b P b I b P A i 55.547log )(log )()(H 47log )(log )(471)(:B ,)2(481i i i i i ==-=∴=-=∴=∑=落入任一格的概率是落入任一格的情况下在已知bitAB P AB P AB H AB P AB I AB P AB i i i i i i i 14.11)4748log()(log )()()(log )(471481)()3(47481=⨯=-=-=∴⨯=∑⨯=是同时落入某两格的概率从大量统计资料知道,男性中红绿色盲的发病率为7%,女性发病率为%.如果你问一位男士:“你是否是红绿色盲”他的回答可能是:“是”,也可能“不是”。
1.6为了使电视图象获得良好的清晰度和规定的对比度,需要用5×105个像素和10个不同的亮度电平,并设每秒要传送30帧图象,所有的像素是独立的,且所有亮度电平等概出现。
求传输此图象所需要的信息率(bit/s )。
解:bit/s 104.98310661.130)/)(()/(R bit/frame10661.1322.3105)(H 105)(H bit/pels322.310log )(log )()(H 7665051010⨯=⨯⨯=⨯=∴⨯=⨯⨯=⨯⨯====∑=frame bit X H s frame r x X a p a p x i i i 所需信息速率为:每帧图像的熵是:每个像素的熵是:,由熵的极值性:由于亮度电平等概出现1.7设某彩电系统,除了满足对于黑白电视系统的上述要求外,还必须有30个不同的色彩度。
试证明传输这种彩电系统的信息率要比黑白系统的信息率大2.5倍左右。
证:.5.2,,5.25.2477.210log 300log )(H )(H pels/bit 300log )(log )()(H bit 3001030,10,,300130011倍左右比黑白电视系统高彩色电视系统信息率要图形所以传输相同的倍作用大信息量比黑白电视系统彩色电视系统每个像素每个像素的熵是:量化所以每个像素需要用个亮度每个色彩度需要求下在满足黑白电视系统要个不同色彩度增加∴≈====∴=⨯∑=x x b p b p x i i i1.8每帧电视图像可以认为是由3×105个像素组成,所以像素均是独立变化,且每像素又取128个不同的亮度电平,并设亮度电平是等概出现。
问每帧图像含有多少信息量?若现在有一个广播员,在约10000个汉字中选1000个字来口述这一电视图像,试问若要恰当地描述此图像,广播员在口述中至少需要多少汉字? 解:个汉字最少需要数描述一帧图像需要汉字每个汉字所包含信息量每个汉字所出现概率每帧图象所含信息量55665510322.6/10322.61.0log 101.2)()()()(,log H(c):1.0100001000symble /bit 101.2128log 103)(103)(:⨯∴⨯=-⨯=≥≤-=∴==⨯=⨯⨯=⨯⨯=frame c H X H n c nH X H n p p x H X H1.9给定一个概率分布),...,,(21n p p p 和一个整数m ,nm ≤≤0。
信息论与编码习题参考答案 第一章 单符号离散信源同时掷一对均匀的子,试求:(1)“2和6同时出现”这一事件的自信息量; (2)“两个5同时出现”这一事件的自信息量; (3)两个点数的各种组合的熵; (4)两个点数之和的熵;(5)“两个点数中至少有一个是1”的自信息量。
解:bitP a I N n P bit P a I N n P c c N 17.536log log )(361)2(17.418log log )(362)1(36662221111616==-=∴====-=∴===⨯==样本空间:(3)信源空间:bit x H 32.436log 3662log 3615)(=⨯⨯+⨯⨯=∴ (4)信源空间: bitx H 71.3636log 366536log 3610 436log 368336log 366236log 36436log 362)(=⨯⨯+⨯+⨯+⨯⨯=∴++ (5) bit P a I N n P 17.11136log log )(3611333==-=∴==如有6行、8列的棋型方格,若有两个质点A 和B ,分别以等概落入任一方格内,且它们的坐标分别为(Xa ,Ya ), (Xb ,Yb ),但A ,B 不能同时落入同一方格内。
(1) 若仅有质点A ,求A 落入任一方格的平均信息量; (2) 若已知A 已落入,求B 落入的平均信息量; (3) 若A ,B 是可辨认的,求A ,B 落入的平均信息量。
解:bita P a P a a P a I a P A i 58.548log )(log )()(H 48log )(log )(481)(:)1(481i i i i i ==-=∴=-=∴=∑=落入任一格的概率Θbitb P b P b b P b I b P A i 55.547log )(log )()(H 47log )(log )(471)(:B ,)2(481i i i i i ==-=∴=-=∴=∑=落入任一格的概率是落入任一格的情况下在已知ΘbitAB P AB P AB H AB P AB I AB P AB i i i i i i i 14.11)4748log()(log )()()(log )(471481)()3(47481=⨯=-=-=∴⨯=∑⨯=是同时落入某两格的概率从大量统计资料知道,男性中红绿色盲的发病率为7%,女性发病率为%.如果你问一位男士:“你是否是红绿色盲”他的回答可能是:“是”,也可能“不是”。
信息论与编码课程作业_huffman编码的matlab_实现信息论与编码课程作业——霍夫曼编码求信源熵和存储前后的信息量的变化一:设计目的:1、学习离散信源平均信息量的计算方法。
2、理解和掌握huffman 编码的基本原理,实现对信源符号的huffman 编码3、熟悉 Matlab 编程;二:设计原理和思路1.信源熵的计算:公式: 21()log a I a p = Matlab 实现:I=log2(1/p) 或I=-log2(p) 熵(平均自信息)的计算公式22111()log log qq i i i i i i H x p p p p ====-∑∑Matlab 实现:HX=sum(-x.*log2(x));或者h=h-x(i)*log2(x(i));2.霍夫曼编码原理;分为两步,首先是码树形成过程:对信源概率进行合并形成编码码树。
然后是码树回溯过程:在码树上分配编码码字并最终得到Huffman 编码。
1、码树形成过程:将信源概率按照从小到大顺序排序并建立相应的位置索引。
然后按上述规则进行信源合并,再对信源进行排序并建立新的位置索引,直到合并结束。
在这一过程中每一次都把排序后的信源概率存入矩阵p 中,位置索引存入矩阵m 中。
这样,由排序之后的概率矩阵 p 以及索引矩阵m 就可以恢复原概率矩阵P 了,从而保证了回溯过程能够进行下去。
2、码树回溯过程:在码树上分配编码码字并最终得到Huffman 编码。
从索引矩阵M 的末行开始回溯。
(1) 在p 的末行2元素位置填入0和1。
(2) 根据该行索引1位置指示,将索引1位置的编码(‘1’)填入上一行的第一、第二元素位置,并在它们之后分别添加‘0’和‘1’。
(3) 将索引不为‘1’的位置的编码值(‘0’)填入上一行的相应位置(第3 列)。
(4) 以m的倒数第二行开始向上,重复步骤(1) ~(3),直到计算至m的首行为止。
三:设计代码:>> clear all;format longdisp(strcat('信息论与编码课程作业——霍夫曼编码求信源熵和存储前后的信息量的变化',13));histgram=zeros(1,255);[c,map]=imread('C:\Documents and Settings\Administrator\桌面\infomation\lenna.bmp');x=rgb2gray(c);[a,b]=size(x);for i=1:afor j=1:bk=x(i,j);histgram(k)=histgram(k)+1;endendf=histgram/a/b;symbols=find(f~=0); %灰度值p=f(symbols); %概率L=length(p);pp=p;%霍夫曼编码m=zeros(L-1,L);for i=1:L-1[p,mark]=sort(p);m(L-i,1:L-i+1)=mark(1:L-i+1);p=[p(1)+p(2),p(3:L),1];endc=cell(L-1,L);c(1,1)={'0'};c(1,2)={'1'};for i=2:L-1;ind=find(m(i-1,:)==1);temp=char(c(i-1,ind));c(i,1)={[temp,'0']};c(i,2)={[temp,'1']};snc=find(m(i-1,:)~=1);for j=3:i+1;con=snc(j-2);c(i,j)=c(i-1,con);endendcodeL=[];averge_long=0;H1=0;disp(strcat('灰度值',32,32,32,'概率',32,32,32,32,32,32,32,32,32,'霍夫曼编码:'));for i=1:L;ind=find(m(L-1,:)==i);code=char(c(L-1,ind));codeLength(i)=length(code);averge_long=averge_long+pp(i)*codeLength(i);H1=H1+pp(i)*log2(1/pp(i));disp(strcat(32,num2str(symbols(i)),32,32,32,num2str(pp(i)),3 2,32, code));enddisp(strcat('信源熵=',num2str(H1),32,32,32,32,'平均码字长度=',num2str(averge_long),32,32,32,32,32,'压缩比=',num2str(8/averge_long)));四:设计运行结果:信息论与编码课程作业——霍夫曼编码求信源熵和存储前后的信息量的变化灰度值概率霍夫曼编码:30 1.5259e-005 101000111100001031 1.5259e-005 101000111100001136 1.5259e-005 101000111100000037 1.5259e-005 101000111100000139 6.1035e-005 1010001111000140 7.6294e-005 1110010101001041 6.1035e-005 0111010111011042 6.1035e-005 0111010111011143 9.1553e-005 1110010101001144 0.00018311 111011101010145 0.00021362 00111101101146 0.00022888 01110101111047 0.00024414 01110101111148 0.00039673 0011110110049 0.00048828 1010001110050 0.00065613 1110010101151 0.00090027 011101011052 0.00086975 001111011153 0.0013123 111001011054 0.0013733 111011101156 0.0018005 01110101057 0.0025177 11010001158 0.0036621 0111111059 0.0033722 0101111060 0.0046539 1100110161 0.0055847 1111010162 0.0061188 001001063 0.0080261 100111064 0.0075226 100001165 0.0083466 101010166 0.0088806 101111167 0.0092773 110011168 0.0095367 110101069 0.0086517 101101070 0.0084229 101011071 0.0075378 100010172 0.0071564 011011173 0.0061493 001001174 0.0056 1111011075 0.0053864 1110110076 0.0045319 1100011177 0.0043488 1011000178 0.0042114 1010111079 0.0039063 1000111180 0.0041199 1010100181 0.0035706 0110101182 0.0039368 1001011083 0.0037537 1000010084 0.003479 0110101086 0.0033417 0101101087 0.0032501 0100110088 0.0034027 0110000189 0.0031128 0011010090 0.0031433 0011110091 0.0036774 0111111192 0.0041046 1010011094 0.0038452 1000111095 0.004364 1011100096 0.0037842 1000110097 0.0037079 1000001198 0.0033722 0101111199 0.0040741 10100001 100 0.0040741 10100010 101 0.0038147 10001101 102 0.0040588 10011111 103 0.0041046 10100111 104 0.004364 10111001 105 0.0048218 11010111 106 0.0052185 11100100 107 0.0049591 11011010 108 0.005188 11100001 109 0.0047455 11010110 110 0.0052032 11100011 111 0.0054474 11110100 112 0.0057526 11111011 113 0.0065308 0100111 114 0.0079346 1001100 115 0.010223 1101111116 0.0095825 1101100 117 0.0089417 1100000 118 0.0086975 1011011 119 0.0081787 1010010 120 0.007782 1001001121 0.0066376 0101011 122 0.0059357 11111111 123 0.0056458 11110111 124 0.0051575 11100000 125 0.0052948 11101001 126 0.005188 11100010 127 0.0059814 0000001 128 0.0058594 11111101 129 0.0065613 0101010 130 0.0062561 0011011 131 0.006897 0110100132 0.0072479 0111011 133 0.0073242 0111110 134135 0.0075226 1000100 136 0.0077515 1001000138 0.008606 1011001139 0.0091095 1100100 140 0.012115 000010141 0.012115 000011142 0.012741 001110143 0.012329 001100144 0.010941 1111001145 0.010147 1101110146 0.0089417 1100001 147 0.0088043 1011101 148 0.0091095 1100101 149 0.010712 1110101150 0.011337 1111100151 0.010513 1110011152 0.012878 010000153 0.012268 001010154 0.013138 010100155 0.012238 001000156 0.012939 010001157 0.012115 000100158 0.012955 010010159 0.012207 000111160 0.011993 000001161 0.013916 011001162 0.012177 000110163 0.012299 001011164 0.0094604 1101001 165 0.0089874 1100010 166 0.0088501 1011110 167 0.0056915 11111010 168 0.0059357 0000000 169 0.0071716 0111001 170 0.0057678 11111100 171 0.0054016 11101111 172 0.0054169 11110001 173 0.0058746 11111110 174 0.0072937 0111100 175 0.0070953 0110110 176177 0.0061035 0001011 178 0.0054016 11110000 179 0.0053864 11101101 180 0.0046692 11010000182 0.0036774 10000000183 0.0033875 01100000184 0.0033264 01011000185 0.0031281 00110101186 0.0035706 01110000187 0.0033264 01011001188 0.0033569 01011011189 0.0036011 01110100190 0.0040436 10011110191 0.0034485 01100010192 0.0036774 10000001193 0.0032654 01001101194 0.0034485 01100011195 0.003006 00010100196 0.0033722 01011100197 0.0036774 10000010198 0.0042419 10110000199 0.0045166 11000110200 0.0041046 10101000201 0.0052643 11101000202 0.0050354 11011011203 0.0045319 11001100204 0.0039825 10011010205 0.0040588 10100000206 0.0039673 10010111207 0.0037537 10000101208 0.0033722 01011101209 0.0026703 111011100210 0.0022125 110100010211 0.0018768 101000110212 0.0015259 000101010213 0.0013428 1110010111214 0.0012665 1110010100215 0.0007782 0011110100216 0.00079346 0011110101217 0.00061035 10100011111218 0.00054932 10100011101219 0.00065613 11101110100220 0.00035095 111011101011 221 0.00033569 111001010101 222 0.00030518 101000111101 223 0.00021362 011101011100 224 0.00016785 1110111010100225 0.00019836 001111011010226 0.00015259 1110010101000227 0.00010681 0111010111010228 6.1035e-005 10100011110010230 3.0518e-005 101000111100110231 1.5259e-005 10100011110011110232 1.5259e-005 10100011110011111233 1.5259e-005 1010001111001110信源熵=7.2193 平均码字长度=7.2492 压缩比=1.1036五:设计新得体会:通过这学期对信息论和编码的学习,以及这次的设计,使我了解了很多东西,也使以前所学的知识得以巩固!,通过这次的设计,进一步学习了离散信源平均信息量、平均码长和压缩比的计算方法。
2.1 同时掷出两个正常的骰子,也就是各面呈现的概率都为1/6,求: (1) “3和5同时出现”这事件的自信息; (2) “两个1同时出现”这事件的自信息; (3) 两个点数中至少有一个是1的自信息量。
2.2 居住某地区的女孩子有25%是大学生,在女大学生中有75%是身高160厘米以上的,而女孩子中身高160厘米以上的占总数的一半。
假如我们得知“身高160厘米以上的某女孩是大学生”的消息,问获得多少信息量?2.3 掷两颗骰子,当其向上的面的小圆点之和是3时,该消息包含的信息量是多少?当小圆点之和是7时,该消息所包含的信息量又是多少?2.4 从大量统计资料知道,男性中红绿色盲的发病率为7%,女性发病率为0.5%,如果你问一位男士:“你是否是色盲?”他的回答可能是“是”,可能是“否”,问这两个回答中各含多少信息量,平均每个回答中含有多少信息量?如果问一位女士,则答案中含有的平均自信息量是多少?2.5黑白气象传真图的消息只有黑色和白色两种,即信源X ={黑,白}。
设黑色出现的概率为P(黑) = 0.3,白色出现的概率为P(白) = 0.7。
假设图上黑白消息出现前后没有关联,求熵H(X);2.6 有两个随机变量X 和Y ,其和为Z = X + Y (一般加法),若X 和Y 相互独立,求证:H(X) ≤ H(Z), H(Y) ≤ H(Z)。
2.7 消息源以概率123451/2,1/4,1/8,1/16,1/16,P P P P P =====发送5种消息符号12345,,,,m m m m m 。
(1) 若每个消息符号出现是独立的,求每个消息符号的信息量。
(2) 求该符号集的平均信息量。
2.8 设离散无记忆信源⎭⎬⎫⎩⎨⎧=====⎥⎦⎤⎢⎣⎡8/14/1324/18/310)(4321x x x x X P X ,其发出的信息为(202120130213001203210110321010021032011223210),求 (1) 此消息的自信息量是多少?(2) 此消息中平均每符号携带的信息量是多少?2.9 汉字电报中每位十进制数字代码的出现概率如题9表所示,求该离散信源的熵。
2.1 同时掷出两个正常的骰子,也就是各面呈现的概率都为1/6,求: (1) “3和5同时出现”这事件的自信息; (2) “两个1同时出现”这事件的自信息; (3) 两个点数中至少有一个是1的自信息量。
2.2 居住某地区的女孩子有25%是大学生,在女大学生中有75%是身高160厘米以上的,而女孩子中身高160厘米以上的占总数的一半。
假如我们得知“身高160厘米以上的某女孩是大学生”的消息,问获得多少信息量?2.3 掷两颗骰子,当其向上的面的小圆点之和是3时,该消息包含的信息量是多少?当小圆点之和是7时,该消息所包含的信息量又是多少?2.4 从大量统计资料知道,男性中红绿色盲的发病率为7%,女性发病率为0.5%,如果你问一位男士:“你是否是色盲?”他的回答可能是“是”,可能是“否”,问这两个回答中各含多少信息量,平均每个回答中含有多少信息量?如果问一位女士,则答案中含有的平均自信息量是多少?2.5黑白气象传真图的消息只有黑色和白色两种,即信源X ={黑,白}。
设黑色出现的概率为P(黑) = 0.3,白色出现的概率为P(白) = 0.7。
假设图上黑白消息出现前后没有关联,求熵H(X);2.6 有两个随机变量X 和Y ,其和为Z = X + Y (一般加法),若X 和Y 相互独立,求证:H(X) ≤ H(Z), H(Y) ≤ H(Z)。
2.7 消息源以概率123451/2,1/4,1/8,1/16,1/16,P P P P P =====发送5种消息符号12345,,,,m m m m m 。
(1) 若每个消息符号出现是独立的,求每个消息符号的信息量。
(2) 求该符号集的平均信息量。
2.8 设离散无记忆信源⎭⎬⎫⎩⎨⎧=====⎥⎦⎤⎢⎣⎡8/14/1324/18/310)(4321x x x x X P X ,其发出的信息为(202120130213001203210110321010021032011223210),求 (1) 此消息的自信息量是多少?(2) 此消息中平均每符号携带的信息量是多少?2.9 汉字电报中每位十进制数字代码的出现概率如题9表所示,求该离散信源的熵。
广西科技大学大作业课程名称:信息论与编码题目:信道编码对通信系统性能的影响学院:电气与信息工程学院专业:电子信息工程班级:学号:成绩:姓名:电话号码:信道编码对通信系统性能的影响[摘要] 简述信道编码理论,详细说明分组码的编译原理、实现方法及检错纠错能力,用MATLAB仿真有无信道编码条件下对通信系统性能的影响及信道编码在不同信道下对通信系统性能的影响,如AWGN信道和深衰落信道。
[关键词] 信道编码、分组码、MATLAB仿真、性能一、引言提高信息传输的有效性和可靠性始终是通信技术所追求的目标,而信道编码能够显著的提升信息传输的可靠性。
1948年,信息论的奠基人C.E.Shannon在他的开创性论文“通信的数学理论”中,提出了著名的有噪信道编码定理.他指出:对任何信道,只要信息传输速率R不大于信道容量C, 就一定存在这样的编码方法:在采用最大似然译码时,其误码率可以任意小.该定理在理论上给出了对给定信道通过编码所能达到的编码增益的上限,并指出了为达到理论极限应采用的译码方法.在信道编码定理中,香农提出了实现最佳编码的三个基本条件:(1 )采用随机编译码方式;(2 )编码长度L→∞ , 即分组的码组长度无限;(3)译码采用最佳的最大似然译码算法。
二、信道编码理论1、信道编码的概念与目的进行信道编码是为了提高信号传输的可靠性,改善通信系统的传输质量,研究信道编码的目标是寻找具体构造编码的理论与方法。
从原理上,构造信道码的基本思路是根据一定的规律在待发送的信息码元中人为的加入一定的多余码元,以引入最小的多余度为代价来换取最好的抗干扰性能。
信道编码是通过信道编码器和译码器实现的用于提高信道可靠性的理论和方法,是信息论的内容之一。
信道编码大致分为两类:①信道编码定理,从理论上解决理想编码器、译码器的存在性问题,也就是解决信道能传送的最大信息率的可能性和超过这个最大值时的传输问题。
②构造性的编码方法以及这些方法能达到的性能界限。
编码定理的证明,从离散信道发展到连续信道,从无记忆信道到有记忆信道,从单用户信道到多用户信道,从证明差错概率可接近于零到以指数规律逼近于零,正在不断完善。
编码方法,在离散信道中一般用代数码形式,其类型有较大发展,各种界限也不断有人提出,但尚未达到编码定理所启示的限度。
在连续信道中常采用正交函数系来代表消息,这在极限情况下可达到编码定理的限度,不是所有信道的编码定理都已被证明。
2、信道编码的分类信道编码可以分成分组码、卷积码和 循环冗余码3类。
分组码是把若干个输入信号变成一个更长的输出序列的编码方式,它通过提供编码的冗余度来实现对信号的检错和纠错。
假设输入信号是一个长度为k 的向量x ,经过分组编码之后的输出信号时一个长度为n 的向量y ,则这个分组编码表示为(),n k ,其中信息位的长度等于k ,码长位n ,监督位的长度r n k =-,编码效率等于/1/k n r n =-.对于分组码,输出序列y 一般可以表示成输入向量x 与生成矩阵G 的乘积,其中G 是一个k 行n 列的矩阵。
BCH 码是一种特别重要的分组编码。
它是根据3个发明人的名字Bose,Chaudhuri Hocguenghem 命名的。
BCH 码的重要性在于它解决了生成多项式与纠错能力至今的关系问题,可以方便的纠正多个随机错误。
对于特定的码字长度n ,BCH 码只能对特定的长度为k 的信息序列进行编码。
Reed-Slolmon 码是一种具有很强纠错能力的多进制BCH 码(简称RS 码),它是以两个发明人的名字Reed 和Solomon 命名的。
对于一个M 进制的RS 码,它的输入和输出信号的范围都等于[]0,1M -,其中2m M =。
RS 码的码长度121m n M =-=-,如果信息位的长度等于k ,则监督位的长度r n k =-另外,RS 码具有很强的纠错能力,假设它能够纠正t 个错误,则RS 码的监督位长度r 和t 之间应该满足关系2r n k t =-=,因此,RS 码的长度与信息为长度之间的差值应该是一个偶数,同时RS 码的最小码元距离为:0121d r t =+=+RS 码的输入信号还可以用二进制符号来表示,每个M 进制符号可以表示成m 位二进制符号。
循环冗余码CRC 是一种是用相当频繁的检错码。
与分组码不同的是循环冗余码不具有纠错能力。
当接收端检测到传输错误时候,它并不去纠正这个传输错误,而是要求发送端重新发送这个信号序列。
在循环冗余码的编码过程中,发送端对一个特定长度的信息序列计算得到一个循环冗余码,并且把这个循环冗余码附加到原来的信息序列的末尾一起发送出去。
接收端接收到带有循环冗余码的信号后,从中分离出信息序列和循环冗余码,然后根据接收到的信息位序列重新计算循环冗余码。
如果这个重新计算得到的循环冗余码与分离出来的循环冗余码不同,则接收信号序列存在着传输错误。
这时候接收端就会要求发送端饿重新发送这个信号序列,通过合格过程实现对信号的纠错。
卷积编码与分组码不同。
在分组码中任何一段规定时间内编码器的输出万群决定于这段时间中的输入信号;而在卷积码中任何一段规定时间的n 个码元不仅取决于这段时间内的k 个信息位,而且还取决于前1N -段时间内的信息位,这个N 就成为卷积码的约束长度。
卷积编码器的表示有两种方式:用多项式表示以及用trellis 图表示。
卷积编码器的多项式表示由3部分组成:约束长度、生成多项式以及反馈多相似。
如果卷积编码器只有一个输入时它的约束长度是一个标量,并且等于卷积编码器中储存的信息位的个数(包括移位寄存器的个数以及当前按的输入信号)。
如果卷积编码器有多个输入,则约束长度是一个向量,其中的每一个元素对应于一个输入信号在卷积编码器中存储的信息位的个数。
假设卷积编码器有个k 输入信号和n 个输出信号,则这个卷积编码器的生成多项式是一个k 行n 列的矩阵()ij k n G g ⨯=,其中的每一个元素ij g 表示第i 个输入信号对第j 个输出信号的影响。
如果第i 个输入信号对第j 个输出信号有影响则ij g =1;否则ij g=0。
对于带反馈的卷积编码器,还需要指定相应的反馈多项式,如果卷积编码器只有一个输入信号则反馈多项式是一个标量。
当卷积编码器有多个输入信号时,反馈多项式是一个向量,它的长度等于卷积编码器输入信号的个数。
3、信道编码的实质信道编码的实质就是在信息码中增加一定数量的多余码元(称为监督码元),使它们满足一定的约束关系,这样由信息码元和监督码元共同组成一个由信道传输的码字。
举例而言,欲传输k 位信息,经过编码得到长为n(n>k)的码字,则增加了 n - k = r 位多余码元,我们定义 R = k / n 为编码效率。
4、 信道编码公式令信息速率为fb ,经过编码以后的速率为ft ,定义:R =fb/ft 为编码率。
则对于任何一个信道,总存在一个截止速率R0,只要R <R0,总可以达到:BER <CR2-nR0,其中CR 为某个常数,n 为编码的约束长度。
对于等概二进码、AWGN 信道,有:三、线性分组码的编译码原理1、 线性分组码的基本概念一个[n ,k ]线性分组码, 是把信息划成k 个码元为一段(称为信息组), 通过编码器变成长为n 个 码元的一组, 作为[n , k ]线性分组码的一)1(log 100/20N E R b e R -+-=121ln 1)1(000-=-R b R N E个码字。
若每位码元的取值有q 种(q 为素数幂), 则共有qk 个码字。
n 长的数组共有qn 组, 在二进制情况下, 有2n 个数组。
显然, qn 个n 维数组(n 重)组成一个GF(q)上的n 维线性空间。
如果qk(或2k)个码字集合构成了一个k 维线性子空间, 则称它是一个[n ,k ]线性分组码。
即将k 维k 重信息空间的元素线性映射到n 维n 重矢量空间(接收矢量/收码) 的k 维n 重子空间(码空间)。
如下图为[7,3]码2、生成矩阵和校验矩阵 生成矩阵:G 称为生成矩阵,因为可以用它产生整个码组A ,即有生成矩阵的性质:具有[IkQ]形式的生成矩阵称为典型生成矩阵。
由典型生成矩阵得出的码组A 中,信息位的位置不变,监督位附加于其后。
这种形式的码组称为系统码。
矩阵G 的各行也必须是线性无关的。
如果已有k 个线性无关的码组,则可以将其用来作为生成矩阵G ,并由它生成其余码组。
监督矩阵:监督矩阵可用来校验和纠错。
[][]G34560123456a a a a a a a a a a a A ==[]⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡==0110001101001011001001111000 Q G k I []r PI H =⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=001101101011011001110四、MATLAB仿真源程序及说明采用模块化编程,把每个功能独立成各个模块,让程序更清晰。
首先介绍各个子程序及其实现的基本功能。
运行环境为Matlab2016版本通信过程的每个模块写成子程序函数:Channelcoding 为信道编码函数Channeldecoding 为信道解码纠错子函数Interwaving 为交积子函数Deinterwaving 为解交积子函数addfade为向信道加入衰落参数的子函数awgn 为库函数,向信源加高斯白噪声pskmod 为库函数,用于信号调制,输出为复数pskdemod 为库函数,用于信号解调信道编码子程序:%信道编码子函数,sym为编码码流,G为生成矩阵,k为编码方式的长度,如(7,4)码的4function bitcoded=channelcoding(sym,G,k)A=vec2mat(sym,k);U=A*G;U=mod(U,2);bitcoded=reshape(U',1,[]);信道解码子程序:function bitdecoded=channeldecoding(recode,Etab,Smatrix,H,n,k)% 前向纠错函数,实现纠错功能% bidecoded为纠错后返回的比特流% recode为输入的比特流% E为错误图样表,S为对应的伴随式表% H为监督矩阵,n,k为码的类型,如(7,4)码,n=7,k=4row=length(recode)/n; %行数E=zeros(row,n); %错误图样RM=zeros(row,n); %纠错之后的矩阵R=vec2mat(recode,n);S=R*H'; %伴随矩阵S=mod(S,2);for i=1:rowfor j=1:2^(n-k) %查表纠错if(S(i,:)==Smatrix(j,:))E(i,:)=Etab(j,:);RM(i,:)=R(i,:)+E(i,:);RM(i,:)=mod(RM(i,:),2);break;endendendbitdecoded=reshape(RM',1,[]); %转化为比特流交织子程序:function retbit=interweaving(bitstream,row,col)%功能:实现对输入比特的交积% retbit为交积后返回的比特流向量% bitstream 为需要交积的比特流向量% row 和 col为交积器的行和列,% 通过改变col就可以改变交积深度retbit=zeros(1,length(bitstream));bitarr=vec2mat(bitstream,row);bitarr=bitarr';for i=1:length(bitstream)/(row*col)temp=bitarr(:,((i-1)*col+1):i*col);retbit(1,((i-1)*(row*col)+1):(i*(row*col)))=reshape(temp',1,[]); end解交织子程序:function retbits=deinterweaving(bitstream,row,col)%功能:实现对输入比特的解交积%rebits为解交积后返回的比特流% bitstream输入的比特流%row 和 col为交积器的行和列,通过改变col就可以改变交积器的长度 retbits=zeros(1,length(bitstream));bitarr=vec2mat(bitstream,col);for i=1:length(bitstream)/(row*col)temp=bitarr((i-1)*row+1:i*row,:);retbits(1,(i-1)*row*col+1:i*row*col)=reshape(temp,1,[]); end信道衰落子程序:function code=addfade(modcode,Tf,isperiod,isfade)%功能:向传输序列modcode叠加衰落性信道的衰落参数k(t)%code为加入衰减参数之后返回的序列。