MATLAB通信原理课程设计报告.doc_第1页
MATLAB通信原理课程设计报告.doc_第2页
MATLAB通信原理课程设计报告.doc_第3页
MATLAB通信原理课程设计报告.doc_第4页
MATLAB通信原理课程设计报告.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB通信原理课程设计报告目 录1课题名称12课程设计的方案和基本原理12.1信息论基本计算12.2数字信号基带传输系统13课程设计步骤33.1信息论基本计算的设计步骤33.2数字信号基带传输系统的设计步骤34课程设计结果和结果分析论证44.1信息论的基本运算结果44.2数字信号基带传输系统的设计结果65、心得体会116附件126.1信息论基本计算126.2数字信号基带传输系统147 评分表281课题名称(1)信息论基本计算。(3)数字信号基带传输系统设计2课程设计的方案和基本原理2.1信息论基本计算2.1.1平均信息量:平均每个符号所能提供的信息量。H(X) 。2.12离散信道容量:信道容量是信道所能传送的最大的信息量。 C=maxI(X;Y) R=I(X;Y)=H(X)-H(XY)2.13信源编码过程:Huffman编码的意义是,用最少的编码长度来表达符号的信息。为了使平均码长度最小,将发生概率较大的符号用比较短的码组来表示,将发生概率较小的符号用较长的码组实现,以得到最佳的变长编码,减少冗余度,提高系统传输的效率。2.2数字信号基带传输系统2.2.1数字基带信号的码型:由于数字基带信号是数字信息的电脉冲表示,不同形式的基带信号(又称为码型)有不同的频谱结构和功率谱分布。不同的码型有不同的优点,常用的码型有单/双极性码、非归零/归零码、数字双相码(曼彻斯特码)、密勒码、AMI码、HDB3码。2.2.2单/双极性码:单极性码是用电平1来表示二元信息中的1,用电平0来表示二元信息中的0,电平在整个码元的持续时间里保持不变,记做NRZ码。双极性码与单极性码的区别仅在于它用电平-1来表示二元信息中的0。2.2.3非归零/归零码:归零码与非归零码的区别仅在于,非归零码在整个码元持续时间内保持电平值不变,而归零码的码元持续时间的前一半时间内保持,而后一半时间内回到0.2.2.4数字双相码(曼彻斯特码):此种码型采用在一个码元的持续时间中央时刻从0到1的跳变来表示1,从1到0的跳变来表示0。或者与之相反用在一个码元的持续时间中央时刻从0到1的跳变来表示0,从1到0的跳变来表示1。2.2.5密勒码:该码型是双相码的变型。它采用码元中央时刻跳变表示信息1即前半时间的电平和前一码元的后半时间的电平相同,中间跳变。遇到信息0做如下处理:首先对0的码元在整个持续时间内保持同一电平值,其次若此0的前一信息是一则码元的电平同前面信息1的码元后半时间电平相同,若前一信息为0,则与前面码元的电平相反。2.2.6 AMI码、HDB3码: AMI码是传号交替反转码。其编码规则是将消息码中的“1”交替变成“+1”和“-1”,将消息码中的“0”仍保持为“0”。HDB3码的全称是3阶高密度双极性码。首先将信息码变换成AMI码,然后检查AMI码中连0的情况,没有发现4个以上连0的码元串时码型不需变换,仍为AMI码的形状。若发现4个以上连0的码元串时,则根据相应规则把第四个0变换成相应符号。2.2.7码型的功率谱分布:数字基带信号一般是随机信号,因此分析随机信号的频谱特性要用功率诺密度来分析。一般来说,求解功率谱是一件相当困难的事,但由于上述几种码型比较简单,我们可以求出其功率谱密度函数。对单极性非归零码、单极性归零码、双极性非归零码和双极性归零码这4种码。由于统计的独立性,课由由功率谱公式画出功率谱波形图。数字双相码的功率相关公式如下:“y=sin(pi*x/2);y=y./(pi*x/2);y(1)=1;mache=sin(pi*x/2).*sin(pi*x/2);mache=mache.*y;mache=mache.*y”。密勒码的相关功率公式如下:“x=x*pi;miler=(23-2*cos(x)-22*cos(2*x)-12*cos(3*x)+5*cos(4*x)+12*cos(5*x)+2*cos(6*x)-8*cos(7*x)+2*cos(8*x)./(17+8*cos(8*x);t=x.*x;miler=miler./t;”对于AMI码和HDB3码的功率谱函数,则需要进行实际的码型进行分析。3课程设计步骤3.1信息论基本计算的设计步骤3.1.1信源平均信息量的计算(以高斯分布的信源为例):通过系统产生一个高斯随机信源,再求出它的平均信息量。3.1.2离散信道容量的计算(以输入符号等概分布为例):编写hmessage函数求出平均互信息,编写dmessage函数,求出离散信息熵,调用hmessage函数和dmessage函数得出hf和hx,最后信道容量c=hx-hf。3.1.3信源编码过程(以Huffman编码为例):先编写huffman函数,对系列排序并求出huffman编码。调用huffman函数和dmessage函数,得出编码后的码字。3.2数字信号基带传输系统的设计步骤3.2.1单/双极性归零/非归零码:先对原始码型进行相应的码型变换,画出码型子图,再由功率谱公式画出功率谱波形图。3.2.2数字双相码:先进行码型变换,再画出功率谱,功率相关公式如下:“y=sin(pi*x/2);y=y./(pi*x/2);y(1)=1;mache=sin(pi*x/2).*sin(pi*x/2);mache=mache.*y;mache=mache.*y”。3.2.3密勒码:密勒码的相关功率公式如下:“x=x*pi;miler=(23-2*cos(x)-22*cos(2*x)-12*cos(3*x)+5*cos(4*x)+12*cos(5*x)+2*cos(6*x)-8*cos(7*x)+2*cos(8*x)./(17+8*cos(8*x);t=x.*x;miler=miler./t;”3.2.4AMI码:编写AMI函数,求的AMI码型变换。编写t2f函数,功能是将时域信号做傅里叶变换到频域。为了求AMI码的功率谱密度,编写AMIpower函数,该函数中又调用了t2f函数。3.2.5HDB3码:编写HDb3函数和t2f函数,分别实现HDb3编码和傅里叶变换。调用HDb3函数和t2f函数,得出原序列图、编码后的序列图和功率谱图。4课程设计结果和结果分析论证4.1信息论的基本运算结果4.1.1信源平均信息量的计算(以高斯分布的信源为例):图4.1.1连续信源平均信息量4.1.2离散信道容量的计算(以输入符号等概分布为例)图4.1.2离散信道容量信道容量为信源的平均信息量减去互信息量。4.1.3信源编码过程(以Huffman编码为例)图4.1.3 huffman编码哈弗曼编码是把出现概率较大的用较短的码元来实现,概率出现较小的用较长的码元实现。4.2数字信号基带传输系统的设计结果4.2.1单极性非归零码及其功率谱图4.2.1单极性非归零码码型和功率谱输入的序列是x=1 1 0 1 0 0 1 0 1 0 0 1,输出的序列是y=1 1 0 1 0 0 1 0 1 0 0 1经编码规则验证是正确的。功率谱显示,码型的功率分布有分段性,并以某些频率为中心。4.2.2单极性归零码及其功率谱图4.2.2单极性归零码码型和功率谱由图可知,输入的序列是x=1 1 0 1 0 0 1 0 1 0 0 1,输出的序列是y=10 10 00 10 00 00 10 00 10 00 00 10 经编码规则验证是正确的。功率谱显示,码型的功率分布有分段性,并以某些频率为中心。4.2.3双极性非归零码及其功率谱图4.2.3双极性非归零码码型和功率谱由图可知输入的序列为x=1 1 0 1 0 0 1 0 1 0 0 1,输出的序列为y=1 1 -1 1 -1 -1 1 -1 1 -1 -1 1, 经编码规则验证是正确的。功率谱显示,码型的功率分布有分段性,并以某些频率为中心。4.2.4双极性归零码及其功率谱密度图4.2.4双极性归零码码型和功率谱由图可知,输入序列为x=1 1 0 1 0 0 1 0 1 0 0 1,输出序列为y=10 10 -10 10 -10 -10 10 -10 10 -10 -10 10。经编码规则验证是正确的。功率谱显示,码型的功率分布有分段性,并以某些频率为中心。4.2.5数字双相码及其功率谱图4.2.5数字双相码码型和功率谱由图可知,输入的序列为x=1 1 0 1 0 0 1 0 1 0 0 1,输出的序列为y=10 10 01 10 01 01 10 01 10 01 01 10. 功率谱显示,码型的功率分布有分段性。4.2.6密勒码及其功率谱图4.2.6密勒码码型和功率谱信息的输入序列是x=1 1 0 1 0 0 1 0 1 0 0 1。4.2.7 AMI码及其功率谱图4.2.7AMI码码型和功率谱输入序列是x=1 1 0 1 0 0 1 0 1 0 0 1。4.2.8 HDB3码及其功率谱图4.2.8 HDB3码码型和功率谱由此图的功率谱与AMI码的功率谱比较可知,HDB3码与AMI码是相似的,HDB3码是AMI码的变形。5、心得体会6附件6.1信息论基本计算6.1.1、信源平均信息量的计算(高斯分布的信源)x=randn(1,100000);%产生N(0,1)高斯源px=1/sqrt(2*pi)*exp(-(x-1).2/2);%计算概率l=-mean(log2(px)%计算熵6.1.2、编程实现离散信道容量的计算(以输入符号等概分布为例)function r=dmessage(x,n) %参数x表示概率矩阵,n是符号的数目r=0;for i=1:nr=r-x(i)*log(x(i)/log(2);enddisp(此离散信源的平均信息量为:); r%直接在命令窗口中调用dmessage函数,也可以在其它函数中调用dmessage( 0.25,0.25,0.25,0.25,4)6.1.3、离散信道容量的计算%求互信息的函数文件如下function r=hmessage(x,f,nx,my)%x为输出的信源分布,f为转移概率矩阵,nx为输出的符号可选个数%my为输出的符号个数sum=0;for i=1:nxfor j=1:my%通过式子p(x,y)=p(x)p(y/x)来求p(x,y),用t表示t=f(i,j)*x(i);%求平均互信息量 if t=0sum=sum-t*log(f(i,j)/log(2);end;end; end;r=sum;disp(平均互信息量为:); %利用函数dmessage来求信源的熵,利用函数hmessage来求平均互信息量x=0.25,0.25,0.25,0.25;f1=1/2,1/4,1/4,0,0,0 0,1/2,1/4,1/4,0,0 0,0,1/2,1/4,1/4,0 0,0,0,1/2,1/4,1/4,;hf1=hmessage(x,f1,4,6);hx=dmessage(x,4);c1=hx-hf1 %信道容量6.1.4、哈弗曼编码的实现p=1/4,1/4,1/4,1/8,1/8;h,l=huffman1(p)%哈弗曼编码的实现函数如下function h,l=huffman (p)if (length(find(p10e-10) error(Not a prob.vector,component do not add to 1) endn=length(p); q=p; m=zeros(n-1,n);for i=1:n-1 q,l=sort(q); m(i,:)=l(1:n-i+1),zeros(1,i-1); q=q(1)+q(2),q(3:n),1; endfor i=1:n-1 c(i,:)=blanks(n*n);endc(n-1,n)=0; c(n-1,2*n)=1; for i=2:n-1 c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)=1)-(n-2):n*(find(m(n-i+1,:)=1); c(n-i,n)=0; c(n-i,n+1:2*n-1)=c(n-i,1:n-1); c(n-i,2*n)=1; for j=1:i-1 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+1,:)=j+1)-1)+1:n*find(m(n-i+1,:)=j+1); end; end for i=1:n h(i,1:n)=c(1,n*(find(m(1,:)=i)-1)+1:find(m(1,:)=i)*n); ll(i)=length(find(abs(h(i,:)=32); end l=sum(p.*ll); %在命令窗口或M文件里调用haffman函数p=1/2,1/4,1/8,1/16,1/16;h,l=huffman(p)6.2数字信号基带传输系统6.2.1、单极性非归零码以及功率谱的实现function y=djx(x)%本函数实现将输入的一段二进制代码编码为相应的单极性非归零码输出%输入x为二进制码,输出y为编好的码%给出计算每一个码元的点数,因为我们只有用离散的点来得出连续的函数表示grid=300;t=0:1/grid:length(x);for i=1:length(x) if(x(i)=1) for j=1:grid y(i-1)*grid+j)=1; end else for j=1:grid y(i-1)*grid+j)=0; end endendy=y,x(i);M=max(y);m=min(y);subplot(2,1,1) ;plot(t,y);hold on;axis(0,i,m-0.1,M+0.1);%采用title命令来实现标记出各码元对应的二元信息title( 1 1 0 1 0 0 1 0 1 0 0 1 );fs=100;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);y(1)=1;dan1=y.*y;dan1=dan1/4;subplot(2,1,2);subplot(2,1,2);plot(x,dan1);axis(1,4,0,0.015);title(单极性非归零码的功率谱);%函数调用t=1 1 0 1 0 0 1 0 1 0 0 1;djx(t);6.2.2、单极性归零码及其功率谱实现function y=djxglm(x)grid=200;t=0:1/grid:length(x);for i=1:length(x) if(x(i)=1) for j=1:grid/2 y(grid/2*(2*i-2)+j)=1; y(grid/2*(2*i-1)+j)=0; end else for j=1:grid/2 y(grid*(i-1)+j)=0; end endendy=y,x(i);M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis(0,i,m-0.1,M+0.1);title( 1 1 0 1 0 0 1 0 1 0 0 1 );fs=50;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);y(1)=2;dan2=y.*y;dan2=dan2/4;subplot(2,1,2);plot(x,dan2);axis(1,5,0,0.05);title(单极性归零码的功率谱);%在命令窗口或M文件中调用函数t=1 1 0 1 0 0 1 0 1 0 0 1;djxglm(t);6.2.3、双极性非归零码及其功率谱的实现function y=sjx(x)%本函数实现将输入的一段二进制代码编码为相应的双极性非归零码输出%输入x为二进制码,输出y为编好的码grid=300;t=0:1/grid:length(x);for i=1:length(x) if(x(i)=1) for j=1:grid y(i-1)*grid+j)=1; end else for j=1:grid y(i-1)*grid+j)=-1; end endendy=y,x(i);M=max(y);m=min(y);subplot(2,1,1); plot(t,y);axis(0,i,m-0.1,M+0.1);%采用title命令来实现标记出各码元对应的二元信息title( 1 1 0 1 0 0 1 0 1 0 0 1 );fs=100;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);y(1)=1;dan1=y.*y;dan1=dan1/4;subplot(2,1,2);plot(x,dan1);axis(1,4,0,0.02);title(双极性非归零码的功率谱);%在命令窗口或M文件中调用函数t=1 1 0 1 0 0 1 0 1 0 0 1;sjx(t);6.2.4、双极性归零码及其功率谱的实现function y=sjxglm(x)%本函数实现将输入的一段二进制代码编码为相应的双极性归零码输出%输入x为二进制码,输出y为编好的码grid=300;t=0:1/grid:length(x);for i=1:length(x) if(x(i)=1) for j=1:grid/2 y(grid/2*(2*i-2)+j)=1; y(grid/2*(2*i-1)+j)=0; end else for j=1:grid/2 y(grid/2*(2*i-2)+j)=-1; y(grid/2*(2*i-1)+j)=0; end endendy=y,x(i);M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis(0,i,m-0.1,M+0.1);%采用title命令来实现标记出各码元对应的二元信息title( 1 1 0 1 0 0 1 0 1 0 0 1 );fs=50;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);y(1)=2;dan2=y.*y;dan2=dan2/4;subplot(2,1,2);plot(x,dan2);axis(1,5,0,0.025);title(双极性归零码的功率谱);%在命令窗口或M文件中调用函数t=1 1 0 1 0 0 1 0 1 0 0 1;sjxglm(t);6.2.5、数字双相码及其功率谱的实现function y=szsxm(x)%本函数实现将输入的一段二进制代码编码为相应的数字双相码输出%输入x为二进制码,输出y为编好的码grid=300;t=0:1/grid:length(x);for i=1:length(x) if(x(i)=1) for j=1:grid/2 y(grid/2*(2*i-2)+j)=1;%用从1到0的电平跳变来表示1 y(grid/2*(2*i-1)+j)=0; end else for j=1:grid/2 y(grid/2*(2*i-2)+j)=0;%用从0到1的电平跳变来表示0 y(grid/2*(2*i-1)+j)=1; end endendy=y,x(i);M=max(y);m=min(y);subplot(2,1,1); plot(t,y);axis(0,i,m-0.1,M+0.1);%采用title命令来实现标记出各码元对应的二元信息title( 1 1 0 1 0 0 1 0 1 0 0 1 );fs=100;x=1:1/fs:5;y=sin(pi*x/2);y=y./(pi*x/2);y(1)=1;mache=sin(pi*x/2).*sin(pi*x/2);mache=mache.*y;mache=mache.*y;subplot(2,1,2);plot(x,mache);axis(1,5,0,0.5);title(数字双相码的功率谱);%在命令窗口或M文件中调用函数t=1 1 0 1 0 0 1 0 1 0 0 1;szsxm(t);6.2.6、密勒码及其功率谱的实现function y=mlm(x)%该函数实现密勒编码,输入码序列为xgrid=100;t=0:1/grid:length(x);%定义时间序列i=1;%由于第一码元的编码不定,我们直接给出if(x(i)=1) for j=1:grid/2 y(grid/2*(2*i-2)+j)=0;%前半时间为0 y(grid/2*(2*i-1)+j)=1;%后半时间为1 endelse for j=1:grid%若输入0 y(grid*(i-1)+j)=0;%码元持续时间内为0 endendfor i=2:length(x)%开始进行密勒编码 if (x(i)=1)%若输入信息为1 for j=1:grid/2 y(grid/2*(2*i-2)+j)=y(grid/2*(2*i-3)+grid/4);%前半时间与前一码元后半时间值相同 y(grid/2*(2*i-1)+j)=1-y(grid/2*(2*i-2)+j);%后半时间与前半时间相反 end else if(x(i-1)=1)%反之,若前一信息为1,输入为0 for j=1:grid y(grid*(i-1)+j)=y(grid/2*(2*i-3)+grid/4);%所有时间与前一码元后半时间值相同 end else%前一信息为0 for j=1:grid y(grid*(i-1)+j)=1-y(grid/2*(2*i-3)+grid/4);%所有时间与前一码元后半时间值相反 end end endendy=y,y(i*grid);M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis(0,i,m-0.1,M+0.1);%采用title命令来实现标记出各码元对应的二元信息title( 1 1 0 1 0 0 1 0 1 0 0 1 );fs=100;x=1:1/fs:5;x=x*pi;miler=(23-2*cos(x)-22*cos(2*x)-12*cos(3*x)+5*cos(4*x)+12*cos(5*x)+2*cos(6*x)-8*cos(7*x)+2*cos(8*x)./(17+8*cos(8*x);t=x.*x;miler=miler./t;miler(1)=0.2;x=x/pi;subplot(2,1,2);plot(x,miler);axis(1,5,0,0.3);title(密勒码的功率谱)%下面是mlm函数的调用t=1 1 0 1 0 0 1 0 1 0 0 1;mlm(t);6.2.7、AMI码及其功率谱的实现*t2f.m文件:傅里叶变换 function X=t2f(x,dt) X=fftshift(fft(x)*dt;function y=AMI(x)grid=300;t=0:1/grid:length(x);i=1; if(x(i)=1) for j=1:grid y(j)=1; h=1; end else for j=1:grid y(j)=0; endendfor i=2:length(x) if(x(i)=1) if h=1 for j=1:grid y(grid*(i-1)+j)=-1; h=-1; end else if h=-1 for j=1:grid y(grid*(i-1)+j)=1; h=1; end end end else for j=1:grid y(grid*(i-1)+j)=0; end endendy=y,x(i);M=max(y); m=min(y);subplot(2,1,1);plot(t,y);axis(0,i,m-0.1,M+0.1);%采用title命令来实现标记出各码元对应的二元信息title( 1 1 0 1 0 0 1 0 1 0 0 1 );Rt=0.5; k=14;N=2k; L=64; M=N/L; Rb=2; Ts=1/Rb dt=Ts/L; df=1/(N*dt) T=N*dt Bs=N*df/2; t=-T/2+dt/2:dt:T/2; f=-Bs+df/2:df:Bs; Ep=zeros(size(f); for ii=1:50 n=1; while rem(n,2)=0, a=round(rand(1,M); n=length(find(a=1); end bb=find(a=1); cc=bb(1:2:length(bb); b=a; b(cc)=-ones(size(cc); ami=zeros(1,N); for tt=1:Rt*Ts/dt; ami(tt+0:M-1*L)=b; end AMI=t2f(ami,dt); P=AMI.*conj(AMI)/T; Ep=(Ep*(ii-1)+P)/ii; end aa=30+10*log10(Ep+eps); subplot(2,1,2);plot(f,aa);axis(-5,+5,-50,50); title(AMI功率谱密度)%AMI函数的调用t=1 1 0 1 0 0 1 0 1 0 0 1;AMI(t);6.2.8、HDB3码及其功率谱的实现function X=t2f(x,dt) X=fftshift(fft(x)*dt;*HDB3_encoding.m文件:function changed_hdb3=Hdb3_encoding(pcm)last_V=-1;last_o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论