
通信系统仿真基于matlab的设计2psk调制.doc
1 课程设计目的 1.1 对数字通信系统主要原理和技术进行研究,包括二进制相移键控(2psk)及解调 技术、高斯噪声信道原理、以及信源编码中香农编码、信道编码中hamming码的基本原理等。 1.2 建立完整的基于2psk和(7,4)循环码的数字通信系统仿真模型,包括2psk调制解 调及香农、hamming码的编译码; 1.3 在信道中加入高斯噪声,观察系统的纠错能力,统计误码率,并进行分析。 1.4 锻炼我们查阅资料、方案比较、团结合作的能力。学会简单电路的实验调试和整 机指标测试方法,增强我们的动手能力。 2 课程设计正文 这次课程设计的主要任务是运用MATLAB编程实现2PSK调制解调过程,并且输出其调 制及解调过程中的波形,讨论其调制和解调效果。了解高斯噪声信道原理、以及香农编译 码、hamming编译码的原理。 2.1 性能指标 2.1.1 用数字基带信号控制载波,把数字基带信号变换为数字带通信号的过程称为数 字调制。本实验详细介绍了PSK波形的产生和仿真过程。我们可以系统的了解基本原理, 以及得到数字调制波形的方法。利用MATLAB仿真可更好的认识2PSK信号波形的调制过程。 图1 相应的信号波形的示例 1 0 1 2.1.2 将文字、数字或其他对象编成数码,或将信息、数据转换成规定的电脉冲信号。 通过本次设计,了解香农—费诺编码的具体过程 ,通过编程实现编码 ,利用 matlab 实 现费诺编码。 2.1.3 当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测 并纠错,简单的说,汉明码是一个错误校验码码集,由Bell实验室的R.W.Hamming发明, 因此定名为汉明码。 2.2 matlab代码 2.2.1 香农编码 %*******************************%香农编码*********************************** A=[0.4,0.3,0.1,0.09,0.04,0.07]; A=fliplr(sort(A));%降序排列 [m,n]=size(A); for i=1:nB(i,1)=A(i);%生成B的第1列end %生成B第2列的元素 a=sum(B(:,1))/2; for k=1:n-1if abs(sum(B(1:k,1))-a)<=abs(sum(B(1:k+1,1))-a)break;end end for i=1:n%生成B第2列的元素if i<=kB(i,2)=0;elseB(i,2)=1;end end %生成第一次编码的结果 END=B(:,2) ; END=sym(END); %生成第3列及以后几列的各元素 j=3; while (j~=0)p=1;while(p<=n)x=B(p,j-1);for q=p:nif x==-1break;elseif B(q,j-1)==xy=1;continue;elsey=0;break;endendendif y==1q=q+1;endif q==p|q-p==1B(p,j)=-1;elseif q-p==2 B(p,j)=0;END(p)=[char(END(p)), 0 ];B(q-1,j)=1;END(q-1)=[char(END(q-1)), 1 ];elsea=sum(B(p:q-1,1))/2;for k=p:q-2if abs(sum(B(p:k,1))-a)<=abs(sum(B(p:k+1,1))-a);break;endendfor i=p:q-1if i<=kB(i,j)=0;END(i)=[char(END(i)), 0 ];elseB(i,j)=1;END(i)=[char(END(i)), 1 ];endendendendp=q;end C=B(:,j);D=find(C==-1);[e,f]=size(D);if e==nj=0;elsej=j+1;end end B A END 2.2.2 香农译码 %********************************%香农解码******************************** jg=[]; for x=1:100if ccc(x,1)==0elseif ccc(x,1)==0elseif ccc(x,1)==1 elseif ccc(x,1)==1elseif ccc(x,1)==1elseif ccc(x,1)==1end; end; jg 2.2.3 Hamming编码 %******************************汉明编码*********************************** hh=encode(e,7,4, hamming/fmt ); hh 2.2.4 Hamming译码 %********************************汉明解码********************************* ddd=reshape(bc,7,100); abc=ddd ; ccc= decode(abc,7,4, hamming/fmt ) 2.2.5 信源 %*****************************信源***************************************** aa = randsrc(1,100,[symbols;p]); aa e=zeros(100,4) for i = 1 : 1:100switch aa(i)case 1e(i,:)=[0,0,0,0]case 2e(i,:)=[0,0,1,0]case 3e(i,:)=[1,1,0,0]case 4e(i,:)=[1,1,0,1]case 6e(i,:)=[1,1,1,0]case 5e(i,:)=[1,1,1,1]end; end; 2.2.6 2psk调制解调 %*******************************2PSK调制解调*******************************