首页数学计算数学MATLAB实验教程 03 第3章 MATLAB在通信原理中的应用.pptx

03 第3章 MATLAB在通信原理中的应用.pptx

页数:297页文件大小:4.56 MB来源: MATLAB实验教程ppt课件

本课件面向通信原理课程,以21个实例演示随机过程仿真、低通抽样定理、脉冲编码调制、增量调制、哈夫曼编码与数字基带信号,并延伸到模拟调幅解调、2ASK/2FSK/2PSK/OFDM数字调制,以及线性分组码与扩频系统。

第3章MATLAB在通信原理中的应用章首导论页,MATLAB中的CommunicationToolbox提供了很多进行通信系统仿真的实用
第3章MATLAB在通信原理中的应用讲解页,知识架构
随机过程的MATLAB仿真实验目的页,了解随机过程的自相关函数和功率谱密度的特点、波形及其之间的关系
查看本课件的文字版(共 297 页,供检索与复制)

第1页:第3章MATLAB在通信原理中的应用

MATLAB中的Communication Toolbox提供了很多进行通信系统仿真的实用函数。在通信原理课程中有很多实际的问题都可通过MATLAB仿真给出形象、生动、直观的演示。本章通过通信原理课程中所涉及的基本概念及知识点,以信号传输过程为顺序,讲述了MATLAB在随机过程仿真、信号的模数转换(抽样、量化、编码),数据压缩,信号的基带传输,信号的频带传输,信号的最佳接收,差错控制编码,扩频通信等方面的应用和仿真过程及方法。

第2页:本章知识架构

知识架构

第3页:随机过程的MATLAB仿真·实验目的

1.实验目的

  • (1)了解随机过程的自相关函数和功率谱密度的特点、波形及其之间的关系。
  • (2)学习MATLAB基本程序控制语句、求功率谱的方法及绘图函数的使用。2.实验原理对于平稳随机过程而言,相关函数是特别重要的一个函数。因为平稳随机过程的统计特性如数字特征等可通过相关函数来描述;另外,相关函数还揭示了随机过程的频谱特性。

第4页:随机过程的MATLAB仿真(续)

1)相关函数的性质设为平稳随机过程,则它的自相关函数具有如下主要性质。综上,相关函数表述了随机过程的几乎所有数字特征,因而以上性质有明显的实用意义。

第5页:随机过程的MATLAB仿真(续)

2)随机过程的频谱特性对任意的确定功率信号f(t),它的功率谱密度可表示为

第6页:随机过程的MATLAB仿真·仿真思路

3.仿真思路在(−1/2,1/2)内产生一个均匀分布的随机数N=1000的离散时间序列,计算该序列的自相关,定义为同时,用计算Rx(m)的离散傅里叶变换(DFT)即可求出序列{xn}的功率

第7页:随机过程的MATLAB仿真·程序代码

4.程序代码1)主程序echo onN=1000;t=1:1:51;M=50;s=-0.5:0.02:0.5;Rx_av=zeros(1,M+1);Sx_av=zeros(1,M+1);for j=1:10,%取10次实现的整体平均X=rand(1,N)-1/2;%在-1/2和1/2之间均分布的随机变量Rx=Rx_est(X,M);%本次实现的自相关系数Sx=fftshift(abs(fft(Rx)));%本次实现的功率谱,fftshift函数将0频谱移到序列中间

第8页:随机过程的MATLAB仿真·程序代码

Rx_av=Rx_av+Rx;%自相关系数之和Sx_av=Sx_av+Sx;%功率谱之和end;Rx_av=Rx_av/10; %自相关系数的整体平均Sx_av=Sx_av/10; %功率谱的整体平均%随后是绘图命令subplot(2,1,1);plot(t,Rx_av)axis([0,50,-0.01,0.09]);subplot(2,1,2);plot(s,Sx_av)axis([-0.5,0.5,0,0.14]);

第9页:求自相关的函数程序代码

2)求自相关的函数function [Rx]=Rx_est(X,M)%该函数用于求随机序列的相关性,变量放在X中,只计算Rx(0)到Rx(M),注意,程序中的%Rx(m)实际放的是自相关函数Rx(m-1),因为Matlab的下标是从1开始,而自相关函数%序列的下标从0开始。N=length(X);Rx=zeros(1,M+1);for m=1:M+1,For n=1:N-m+1,Rx(m)=Rx(m)+X(n)*X(n+m-1);end;Rx(m)=Rx(m)/(N-m+1);end;

第10页:随机过程的MATLAB仿真·运行结果与分

5.运行结果与分析图3.1为随机过程的自相关函数。由该图可看出,该序列在0附近有一定相关性,随着m取值的增大,自相关函数近似为0。这正反映了题目中“独立同分布”序列性质。图3.1随机过程的自相关函数

第11页:随机序列的功率谱密度曲线

图3.2为随机序列的功率谱密度曲线。该曲线是一条波动较小的曲线,考虑到只取了50点FFT,近似认为该序列的功率谱为恒定值,所以该序列构成的随机过程可以认为是平稳的。结合前面自相关函数的曲线,该结论符合理论知识中关于平稳随机过程的论述。图3.2随机过程的功率谱密度

第12页:随机过程的MATLAB仿真·思考题

6.思考题

  • (1)在计算X的自相关函数脚本Rx_est中,为什么m取到M+1,n取到N-m+1?在“Rx(m)=Rx(m)+X(n)*X(n+m-1)”中为什么X(n+m-1)的括号内是n+m-1?“Rx(m)=Rx(m)/(N-m+1)”为什么除数是N-m+1?
  • (2)本例中讨论的是离散随机序列的情况,对于由连续随机变量构成的随机过程的仿真该怎样进行?

第13页:低通信号抽样定理·实验目的

1.实验目的

  • (1)了解低通型抽样定理的定义。
  • (2)了解低通型抽样定理的仿真方法。2.实验原理抽样定理又称为采样定理,是模拟信号数字化的基础理论。抽样是是时间上的离散化。在数字通信中,不仅要把模拟信号变成数字信号进行传输,而且在收端还要将它还原成模拟信号,还原的信号应该与发端的信号尽可能相同,才能达到通信的目的。为了使收端通过译码获得的样值信号能够恢复成与信号源发出信号相同的模拟信号,首先应该保

第14页:证抽样不引起信号失真

证抽样不引起信号失真。抽样定理告诉人们:一个频带限制在fm赫兹以内的时间连续函数x(t),如果以Ts≤1/(2fm)的间隔进行等间隔时间抽样,则所得的样值可以完全地确定原信号x(t)。这就是低通型抽样定理的内容。根据所处理的信号不同,抽样定理分为低通型抽样定理和带通型抽样定理。低通型抽样定理是带通型抽样定理的基础。本例重点阐述低通型抽样定理。抽样的过程是将输入的模拟信号与抽样信号相乘而得到样值信号的过程。通常抽样信号是一个周期为Ts的周期脉冲信号,抽样后得到的信号为抽样序列。理想抽样信号定义如下。

第15页:低通信号抽样定理(续)

其中,fs=1/Ts,称为抽样速率。因此抽样后信号为低通信号的抽样定理可以从频域来理解,抽样后信号的频谱是原信号的频谱平移nfs后叠加而成的,因此如果频谱不发生重叠,通过低通滤波器可以滤除原信号。如果抽样速率低于2fm,则抽样后信号频谱发生混叠,不能无失真地恢复原始信号。

第16页:低通信号抽样定理·仿真思路

3.仿真思路信号x(t)为其波形如图3.3所示。图3.3信号x(t)的波形

第17页:低通信号抽样定理(续)

要注意的是,该波形图只是为了表示信号的时间和幅度关系,所以未标明单位。首先用解析法编制MATLAB程序求出信号x(t)的幅度谱,然后用数值法编制MATLAB程序,根据抽样定理求出该信号的幅度谱,并比较两者的差别。经过分析,信号x(t)可以变换为如下形式。根据傅里叶基本变换对及变换性质,可得其傅里叶变化为

第18页:中波形比较平滑的特点

下面就根据式(3-11)编写解析法的程序。至于数值法的程序,先要根据抽样定理确定一些参数。根据图3.3中波形比较平滑的特点,可以大致估计该信号的带宽正比于信号持续时间的倒数,信号持续时间为4,所以其带宽为0.25,为了安全起见,将带宽值扩大10倍,即取为2.5。由采样定理,奈奎斯特频率为5,即采样间隔为0.2。有了这些基本参数后就可以进行程序的编制了。首先在一个更宽的范围[−4,4]内按上面的分析进行采样,之后用FFT做傅里叶变换。其中计算傅里叶变换时需要确定一个频率分辨率,这里根据0.25这个值,取为0.01。

第19页:低通信号抽样定理·程序代码

4.程序代码2)主程序%参数设置ts=0.2;fs=1/ts;df=0.01;f1=[-2.5:0.001:2.5];%根据采样定理进行抽样x=[zeros(1,10),[0:0.2:1],ones(1,9),[1:-0.2:0],zeros(1,10)];%对采样信号进行FFT[X,x,df1]=fftseq(x,ts,df);X1=X/fs;f=[0:df1:df1*(length(x)-1)]-fs/2;%解析法计算信号幅度谱

第20页:低通信号抽样定理·程序代码

y=4*(sinc(2*f1)).^2-(sinc(f1)).^2;%绘图指令subplot(2,1,1)plot(f1,abs(y));xlabel('f')title('解析法求得的x(t)幅度谱')subplot(2,1,2)plot(f,fftshift(abs(X1)));xlabel('f')title('根据采样定理(数值法)求得的x(t)幅度谱')2) FFT算法程序function [M,m,df]=fftseq(m,ts,df)fs=1/ts;%确定输入变量的情况

第21页:低通信号抽样定理·程序代码

if nargin == 2n1=0;elsen1=fs/df;endn2=length(m);%确定FFT的计算次数n=2^(max(nextpow2(n1),nextpow2(n2)));%序列的FFTM=fft(m,n);m=[m,zeros(1,n-n2)];5.运行结果与分析图3.4为仿真结果。从仿真结果可以看出,根据抽样定理求出的幅度谱与解析法求出的精确解

第22页:本一致,其主瓣和主要旁瓣与精确解非常吻合

本一致,其主瓣和主要旁瓣与精确解非常吻合,只是一些幅度很小的拖尾与精确解有细微差别,但这些很小的误差可以忽略不计。这个仿真证明了抽样定理的正确性。6.思考题

  • (1)在前面的分析中提到为了安全起见,近似估计信号x(t)的带宽为信号持续时间倒数的10倍,这样的做法是否欠妥?根据抽样定理的仿真结果与精确解的高度吻合是否正是由于这样的取值?
  • (2)编写代码画出x(t)的波形及x(t)的抽样信号的离散值。

第23页:低通信号抽样定理·运行结果图

图3.4信号幅度谱仿真图

第24页:脉冲编码调制·实验目的

1.实验目的

  • (1)了解脉冲编码调制的原理。
  • (2)了解均匀量化、非均匀量化的原理。
  • (3)掌握均匀量化的缺点、非均匀量化的优点。2.实验原理图3.5为PCM系统的原理框图。PCM系统主要由抽样、量化和编码3部分组成。1)抽样。根据抽样定理,若x(t)表示信号源发出的样本函数,抽样器以抽样率fs≥2fm采得样值,则可以由样值无失真恢复原始信号,这里fm是x(t)频谱中的最高频率。

第25页:脉冲编码调制(续)

2)量化每个信号样值量化成2L个幅度电平之一,L是样值量化后的二进制位数。对于均匀量化器,输出电平标定为对应的输入信号幅度范围是(k−1)Δ≤x≤kΔ,这里的Δ是步长,它的值是量化范围与量化级数的商。图3.5 PCM系统原理框图

第26页:话音信号通常是小信号出现的概率大

话音信号通常是小信号出现的概率大,大信号出现的概率小。在均匀量化器的整个信号动态范围内,各电平具有相等的间隔大小,而量化误差与量化间隔是成正比的,这样就造成了对于小信号和大信号具有相同的量化误差,因此,小信号的量化信噪比小,大信号的量化信噪比大,达不到CCITT规定的在信号的动态范围为40dB时,信号的量化信噪比要大于26dB的要求。为提高小信号时的量化信噪比,压缩比特速率,采用非均匀量化是十分必要的。非均匀量化一般采用压扩的方法来实现。

第27页:脉冲编码调制(续)

所谓压扩,即压缩与扩张,压缩是将经量化的样值信号先进行非线性变换,使原来的输入信号的动态范围变小,压缩器对小信号增益大,而对大信号则增益小,再将压缩器输出的信号进行均匀量化,从而使小信号的量化信噪比得到改善,收端在译码后用扩张器恢复原抽样信号。常用的压缩特性曲线有A律对数压缩和μ律对数压缩两种。设压缩前的信号为x,压缩后的信号为y。则A律压缩特性曲线公式为:

第28页:脉冲编码调制(续)

μ律压缩特性曲线公式为
其中x为归一化值(x/V),常数A、μ为压缩系数。根据该对数压缩特性,信号样值被非均匀地量化成相应幅值。这部分在框图中的压缩器与量化器中完成。在国际电报电话咨询委员会G11建议中,已将13折线近似的A律和15折线近似的μ律规定为国际标准,后者被美国和日本采用,前者被中国、欧洲和南美等国的国内通信网采用,而在国际通信中,则一致采用13折线A律,下面主要介绍A律13折线。

第29页:A律特性中的A为压缩参数

A律特性中的A为压缩参数,A的大小直接与压缩效果有关。设在直角坐标中x轴与y轴分别表示输入信号和输出信号的取值域,并假定输入信号和输出信号的最大取值是±V,现把x轴的区间(0,V)不均匀地分成8段,分段的规律是每次都以1/2取段,如图3.6所示。然后,每段再均匀地分为16等分,每一等分就为一个量化级。在0~V范围内共有128个量化级,但各段上的量化级是不均匀的。这样,对输入信号就形成了一个不均匀量化方案。这个方案对弱信号时的量化级分得细,对强信号分得粗。

第30页:脉冲编码调制·运行结果图

图3.6A律13折线图y轴也要进行分段,将y轴的区间(0,V)均匀地分为8段,每段再均匀地分成16等分,所以y轴是均匀地分成128级,每个量化段为V/128。

第31页:第1、2段的斜率相同,因此可连成一条直线

第1、2段的斜率相同,因此可连成一条直线,所以实际上是7条直线,上述分析是正方向的,在负方向上也有与正方向对称的一组折线。考虑负向第1、2段与正向1、2段具有相同的斜率,因此可把它们并成一条折线。于是得到13段折线,如图3.6所示。由图可见,第1、2段斜率最大,越往后斜率越小,因而13折线连成的曲线是逼近对数曲线的,具有压扩作用。经过压缩再均匀量化的信号,小信号量化间隔小,大信号量化间隔大,从而小信号的量化噪声小,大信号的量化噪声大,统一起来能达到CCITT规定的信号动态范围40dB时,量化信噪比大于26dB的要求。

第32页:脉冲编码调制(续)

3)编码编码器根据PCM编码规则将量化值数字化。编码方法多种多样的,现有编码方法中,按编码的速度大致可分为低速编码和高速编码两大类。通信中一般都采用第二类。编码器的种类可以归结为3种:逐次比较型、折叠级联型和混合型。经过信道传输的二进制码按照与上面3步相反的逆过程进行解码、扩张和滤波得到输出信号。3.仿真思路1)连续信号的均匀量化产生一个幅度为1、频率ω=1的正弦波。采用均匀PCM方案,将其进行8级和16级量化。在同一

第33页:坐标系内绘出原始信号和量化信号的曲线

坐标系内绘出原始信号和量化信号的曲线。将两种情况得到的SQNR进行比较。2)离散信号的均匀量化特性及均匀PCM按照PCM系统原理框图的流程,首先确定输入信号,输入信号分连续和离散两种情况;接着,根据均匀量化的公式写出均匀量化函数,对连续信号和离散序列分别进行均匀量化;得到量化值的同时采用比较排序的方法做均匀PCM编码。产生一个零均值、方差为1的高斯随机变量序列,序列长度为500。用均匀量化找出当量化级的数量为64时的SQNR。求出该序列的前5个值、相应的量化值和相应的码字。

第34页:脉冲编码调制(续)

3) A律压缩特性曲线用13折线近似A律压缩特性曲线方法如下,归一化输入x∈[−1,1],归一化输出y∈[−1,1],压缩特性关于原点成奇对称,以下仅考虑第一象限情况。平均等分成8区间,x的区间为[0,1/128]、[1/128,1/64]、[1/64,1/32]、[1/32,1/16]、[1/16,1/8]、[1/8,1/4]、[1/4,1/2]、[1/2,1]。对应的y区间为[0,1/8]、[1/8,2/8]、[2/8,3/8]、[3/8,4/8]、[4/8,5/8]、[5/8,6/8]、[6/8,7/8]、[7/8,1]。各区间端点相连,构成A律13折线近似压缩特性曲线。4)离散信号的非均匀量化特性及非均匀PCM对于非均匀PCM,总体的步骤与均匀量化及均匀PCM相同。但有一点不同,那就是在量化前要先进行A律压缩。

第35页:产生一个零均值程序代码

产生一个零均值、方差为1的高斯随机变量序列,序列长度为500。对其进行64电平的A律非线性量化,画出量化误差和输入输出关系曲线,并求SQNR。4.程序代码1)连续信号的均匀量化的主程序t=[0:0.01:10];a=sin(t);[sqnr8,aquan8,code8]=u_pcm(a,8);[sqnr16,aquan16,code16]=u_pcm(a,16);sqnr8%N=8时的信号量化噪声比sqnr16%N=16时的信号量化噪声比%信号波形及其量化后的曲线

第36页:脉冲编码调制·程序代码

plot(t,a,'-',t,aquan8,'-.',t,aquan16,'-',t,zeros(1,length(t)));legend('信号波形','8电平量化','16电平量化','Location','SouthEast')2)离散信号的均匀量化的主程序a=randn(1,500);n=64;b=-2.5:.01:2.5;[sqnr,a_quan,code]=u_pcm(a,64);[sqnr,a_quan1,code1]=u_pcm(b,64);sqnr %信号的量化信噪比a(1:5) %输入值a_quan(1:5) %量化值code(1:5,:) %码字subplot(2,1,1);plot(b,a_quan1); %量化器输入-输出波形图

第37页:脉冲编码调制·程序代码

title('量化器输入-输出波形图')subplot(2,1,2);plot(a-a_quan);%量化误差波形图title('量化误差')3) A律压缩特性曲线clear allClose all;%清除所有记录dx=0.01;%定义x的间距x=-1:dx:1;A=87.56;%定义参数A的值为87.56fori=1:length(x)%对数压缩器输入-输出幅度特性,x是输入的幅值ifabs(x(i))﹤1/A%y是输出的幅值ya(i)=A*x(i)/(1+log(A));

第38页:脉冲编码调制·程序代码

elseya(i)=sign(x(i))*(1+log(A*abs(x(i))))/(1+log(A));endendfigure(1)%画出折线近似A律plot(x,ya,'k.:');title('A LAW')xlabel('x');ylabel('y');grid onhold on%定义X,Y的量化步长xx=[-1,-1/2,-1/4,-1/8,-1/16,-1/32,-1/64,-1/128,1/128,1/64,1/32,1/16,1/8,1/4,1/2,1];

第39页:脉冲编码调制·程序代码

yy=[-1,-7/8,-6/8,-5/8,-4/8,-3/8,-2/8,-1/8,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1];plot(xx,yy,'r');%画出A律压缩特性stem(xx,yy,'b-.');4)离散信号的非均匀量化的主程序a=randn(1,500);b=-3:.01:3;[sqnr,a_quan,code]=Ala_pcm(a,64,87.6);[sqnr1,a_quan1,code1]=Ala_pcm(b,64,87.6);sqnr%信号的量化信噪比a(1:5)%输入值a_quan(1:5)%量化值code(1:5,:)%码字subplot(2,1,1);plot(b,a_quan1);title('量化器输入输出关系');

第40页:脉冲编码调制·程序代码

subplot(2,1,2);plot(a-a_quan);title('量化误差');5) A律PCM编码程序function [sqnr,a_quan,code]=Alaw_pcm(a,n,A)amax=max(abs(a));y=Alaw(a,A);[sqnr,y_q,code,amax]=u_pcm(y,n);a_quan=invAlaw(y_q,A);a_quan=amax*a_quan;sqnr=20*log10(norm(a)/norm(a-a_quan));6)量化及PCM编码程序function [sqnr,a_quan,code]=u_pcm(a,n)amax=max(abs(a));

第41页:脉冲编码调制·程序代码

a_quan=a/amax;b_quan=a_quan;d=2/n;q=d.*[0:n-1];q=q-((n-1)/2)*d;%量化值的计算Fori=1:na_quan(find((q(i)-d/2 <= a_quan) & (a_quan <= q(i)+d/2)))=...q(i).*ones(1,length(find((q(i)-d/2 <= a_quan) & (a_quan <=q(i)+d/2))));b_quan(find( a_quan==q(i) ))=(i-1).*ones(1,length(find(a_quan==q(i) )));enda_quan=a_quan*amax;

第42页:脉冲编码调制·程序代码

%PCM编码nu=ceil(log2(n));code=zeros(length(a),nu);for i=1:length(a)Forj=nu:-1:0if ( fix(b_quan(i)/(2^j)) == 1)%fix(x)对x向0取整的函数code(i,(nu-j)) = 1;b_quan(i) = b_quan(i)-2^j;endendend%SQNR的计算sqnr=20*log10(norm(a)/norm(a-a_quan));%norm(a)求a的均方根值

第43页:A律对数压缩特性函数程序代码

7) A律对数压缩特性函数function y=Alaw(x,A)a=max(abs(x));x=x/a;indx=find(abs(x)<=1/A);if~isempty(indx)y(indx)=A/(log(A)+1)*abs(x(indx)).*sign(x(indx));endindx=find(abs(x)>1/A);if~isempty(indx)y(indx)=1/(log(A)+1)*(1+log(abs(x(indx))*A)).*sign(x(indx));end8) A律对数压缩特性的逆function x=invAlaw(y,A)

第44页:脉冲编码调制·程序代码

indx = find(abs(y) <= 1/(log(A)+1));if~isempty(indx)x(indx) = (log(A)+1)/A*abs(y(indx)).*sign(y(indx));endindx = find(abs(y) > 1/(log(A)+1));if~isempty(indx)x(indx) =1/A * exp(abs(y(indx)) / (1/(log(A)+1))-1) .* sign(y(indx));end5.运行结果与分析1)连续信号均匀量化在图3.7中,虚线代表8电平量化的情况,实折线代表16电平量化的情况,显然,16电平量化折线更加逼近原信号波形,这说明随着量化电平数的增

第45页:加,量化结果更好

加,量化结果更好。但随之而来的是计算复杂度的增加。图3.7连续信号不同电平均匀量化

第46页:脉冲编码调制·对照表

2)离散信号64电平均匀量化以下是对长度为500的高斯随机变量序列64电平均匀量化和均匀PCM的结果,图3.8中绘制了量化器的输入输出关系及量化误差,表3-1中给出了信噪比以及5组具体的输入值、量化值、码字。表3-1离散信号均匀量化及均匀PCM结果从图3.8中可以看出量化器输入输出关系近似

本页表格在源课件中以图片形式呈现,源文件未提取到表体数据,未作数值还原,建议对照原图补充完整表格内容。

第47页:脉冲编码调制·对照表

一条直线,这正体现了均匀量化的特点。表3-1中选了5个具体的输入值及与其对应的量化值和码字,从中也可以看出量化误差的情况。图3.8离散信号64电平均匀量化及量化误差

本页表格在源课件中以图片形式呈现,源文件未提取到表体数据,未作数值还原,建议对照原图补充完整表格内容。

第48页:脉冲编码调制·对照表

3) A律压缩特性曲线图3.9为A律压缩特性曲线。从运行结果可以看出采用非均匀量化,量化器随输入信号的大小采用不同的量化间隔,大信号采用大的量化间隔,小信号采用小的量化间隔,可以以较少的量化电平数达到输入动态范围的要求。4)离散信号A律64电平非均匀量化以下是对长度为500的高斯随机变量序列64电平非均匀量化和非均匀PCM的结果,图3.10中同样绘制了量化器的输入输出关系及量化误差,表3-2中也给出了信噪比以及5组具体的输入值、量化值、码字。

本页表格在源课件中以图片形式呈现,源文件未提取到表体数据,未作数值还原,建议对照原图补充完整表格内容。

第49页:A律压缩特性曲线

图3.9 A律压缩特性曲线从图3.10中可以看出,对同样的离散信号进行64电平量化,非均匀量化器输入输出关系与图

第50页:表3-2 离散信号非均匀量化及均匀PCM

3.8中均匀量化器输入输出关系明显不同,图3.10中量化器输入输出关系曲线的折线正是其非均匀的体现,在零附近比均匀量化更趋近于直线,表明其对小信号信噪比有改善。但从第二个图中可以看出,在某些值的量化误差较大,这是由于对于大信号采用非均匀量化的结果。具体的结果见表3-2。表3-2离散信号非均匀量化及均匀PCM结果

本页表格在源课件中以图片形式呈现,源文件未提取到表体数据,未作数值还原,建议对照原图补充完整表格内容。

第51页:离散信号64电平非均匀量化及量化误差

图3.10离散信号64电平非均匀量化及量化误差

第52页:表3-2 中可以看出量化误差较大

从表3-2中可以看出量化误差较大,信噪比明显达不到要求,造成此结果的原因是表中所列的几个输入值在这个题目中都属于较大的幅值信号,从图3.10中可以看出,误差小、信噪比理想的量化值在零附近,即输入幅值很小。6.思考题

  • (1)A律量化中用到了一个A律对数压缩特性的逆函数,原因何在?
  • (2)用类似方式画出μ律压缩特性曲线。
  • (3)根据以上过程,试对μ律进行非均匀量化和PCM编码。
  • (4)比较A律压缩与μ律压缩的异同。

本页表格在源课件中以图片形式呈现,源文件未提取到表体数据,未作数值还原,建议对照原图补充完整表格内容。

第53页:增量调制·实验目的

1.实验目的

  • (1)了解增量调制的原理和特点。
  • (2)学会用MATLAB软件进行增量调制仿真实验。2.实验原理调制(ΔM)是在PCM方式的基础上发展而来的另一种模拟信号数字化的方法。ΔM可以看成是DPCM的一种简化形式,它们都是用二进制形式去表示模拟信号的方法。在增量调制方式下,采用1比特量化器,即用1位二进制码传输样值的增量信息,预测器是一个单位延迟器,延迟一个采样时间间隔。预测滤波器的分子系数向量是[0,1],分母

第54页:增量调制(续)

系数为1。当前样值与预测器输出的前一样值进行比较,如果其差值大于零,则发1码,如果小于零,则发0码。3.仿真思路增量调制系统框图如图3.11所示,其中量化器是一个零值比较器,根据输入的电平极性,输出为δ,预测器是一个单位延迟器,其输出为前一个采样时刻的解码样值,编码器也是一个零值比较器,若其输入为负值,则编码输出为0,否则输出为1。解码器将输入1、0符号转换为δ,然后与预测值相加后得到解码样值的输出,同时也作为预测器的下一个输入。

第55页:增量调制·运行结果图

图3.11增量调制系统框图根据图3.11建立数学关系,编程中采用循环结构来模拟仿真采样时刻向前推进,并建立前后采样时刻样值间的关系。已知输入信号为x(t)=sin2π50t+0.5sin2π150t增量调制的采样间隔为1ms,量化阶距为δ=0.4,

第56页:单位延迟器初始值为程序代码

单位延迟器初始值为0。建立仿真模型并求出前20个采样时刻的编码输出序列以及解码样值波形。4.程序代码Ts=1e-3;%采样间隔t=0:Ts:20*Ts;%仿真时间序列x=sin(2*pi*50*t)+0.5*sin(2*pi*150*t);%信号delta=0.4;%量化阶距D(1+length(t))=0;%预测器初始状态For k=1:length(t)e(k)=x(k)-D(k);%误差信号e_q(k)=delta*(2*(e(k)>=0)-1);%量化器输出D(k+1)=e_q(k)+D(k);%延迟器状态更新codeout(k)=(e_q(k)>0);%编码输出end

第57页:增量调制·程序代码

subplot(3,1,1);plot(t,x,'-o');axis([0 20*Ts,-2 2]);hold on;subplot(3,1,2);stairs(t,codeout);axis([0 20*Ts,-2 2]);%解码端Dr(1+length(t))=0;%解码端预测器初始状态Fork=1:length(t)eq(k)=delta*(2*codeout(k)-1);%解码xr(k)=eq(k)+Dr(k);Dr(k+1)=xr(k);%延迟器状态更新endsubplot(3,1,3);stairs(t,xr);hold on;%解码输出subplot(3,1,3);plot(t,x);%原信号5.运行结果与分析程序执行结果如图3.12所示。最上面的是信号原图,中间的是输出的增量调制信号,最下面的

第58页:增量调制(续)

是解码后的波形。从图中原信号和解码结果对比来看,在输入信号变化平缓的部分,编码器输出1、0交替码,相应的解码结果以正负阶距交替变化,形成颗粒噪声,称空载失真;在输入信号变化过快的部分,解码信号因不能跟上信号的变化而引起斜率过载失真。量化阶距越小,则空载失真就越小,但是容易发生过载失真;反之,若量化阶距增大,则斜率过载失真减小,但空载失真增大。如果量化阶距能够根据信号的变化缓急自适应调整,则可以兼顾优化空载失真和过载失真,这就是自适应增量调制的思想。

第59页:增量调制·运行结果图

图3.12增量调制运行结果6.思考题

  • (1)增量调制与PCM相比有什么优缺点?
  • (2)改进上述增量调制程序,使得量化阶距能够根据信号的变化缓急自适应调整,最优化空载失真和过载失真。

第60页:信源哈夫曼编码·实验目的

1.实验目的

  • (1)进一步了解数字通信中编码的信源编码原理。
  • (2)进一步了解无失真编码和限失真编码的区别。
  • (3)学习Huffman编码的方法及其实现。2.实验原理信源编码的主要任务是减小冗余,提高编码效率。信源编码分为无失真编码和限失真编码两类。哈夫曼编码(Huffman Coding)是一种无损信源压缩编码。Huffman编码的基本原理就是为概率较小的信源输出分配较长的码字,而对那些出现可能性较大的信源输出分配较短的码字。

第61页:Huffman编码算法及步骤如下

Huffman编码算法及步骤如下。设信源S的信源空间为其中:现用有r个码符号的码符号集对信源S中的每一个符号si(i=1,2,…,q)进行编码。编码的步骤如下。

  • (1)把q个信源符号s1,s2,…,sq按概率分布的大小,以递减次序排列起来。
  • (2)用码符号a1,a2,…,ar分别代表概率最小的r个信源符号,并将这r个概率最小的信源符号合并成一个符号,从而得到只包含[(q−r)+1]个符号的新信源。

第62页:信源哈夫曼编码(续)

这个新信源称为S信源的第一次缩减信源s1。

  • (3)把缩减信源s1的符号仍按其概率的大小,以递减次序排列,r个概率最小的符号依步骤1中的同样次序分别由码符号a1,a2,…,ar表示,并将它们合并成一个符号,又形成含有{[(q−r+1)−r]+1}个符号的第二次缩减信源s2。
  • (4)按照以上的方法依次继续下去。每次缩减所减少的信源符号数是(r−1),缩减到第n次时,总共减少的信源符号数是[(r−1)n],第n次缩减信源含有的符号数是{q−[(r−1)n]}。当s1含有的符号数大于码符号集的码符号数时,编码过程继续往下进行。

第63页:信源哈夫曼编码(续)

(5)当缩减过程进行到第m(m>1)次缩减时,如m次缩减信源sm含有的符号数{q−[(r−1)m]}正好等于码符号集的码符号数r,则表明编码过程已进行到最后一步,信源只剩下最后r个符号。将这最后r个符号分别用码符号a1,a2,…,ar表示。从最后一级缩减信源开始,沿着码符号授予的线路,向前返回,就得出每个信源符号所对应的码符号序列,完成编码的全过程。3.仿真思路假设一信源的字符集为X={x1,x2, … ,x6},相应的概率向量为P={0.3,0.1,0.21, 0.09,0.05,0.25}。首先将概率向量P中的元素进行排序,

第64页:信源哈夫曼编码·程序代码

P={0.3,0.25,0.21,0.1,0.09,0.05}。然后根据Huffman编码算法得到Huffman树状图如图3.13所示,编码之后的树状图如图3.14所示。图3.13树状图图3.13编码树

第65页:由可知程序代码

由图3.14可知x1、x2、x3、x4、x5、x6的码字依次分别为11、10、00、010、0111、0110。平均码长:因此,可以利用MATLAB将Huffman编码算法编写成函数文件huffman,实现对具有概率向量P的离散无失真信源的Huffman编码,并得到其码字和平均码长。4.程序代码function [h,l]=huffman(p)if (length(find(p<0))~=0)error(‘Not a prob,negative component’); %判断是否符合概率分布的条件end

第66页:信源哈夫曼编码·程序代码

if (abs(sum(p)-1)>10e-10)error('Not a prob.vector,component do not add to 1')endn=length(p);fori=1:n-1%对输入的概率进行从大到小排序forj=i:nifp(i)<=p(j)x=p(i);p(i)=p(j);p(j)=x;endendendq=p;m=zeros(n-1,n);fori=1:n-1

第67页:信源哈夫曼编码·程序代码

[q,l]=sort(q);m(i,:)=[l(1:n-i+1),zeros(1,i-1)];q=[q(1)+q(2),q(3:n),1];endfori=1:n-1c(i,:)=blanks(n*n);end%以下计算各个元素的码字c(n-1,n)='0';c(n-1,2*n)='1';for i=2:n-1c(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';

第68页:信源哈夫曼编码·程序代码

c(n-i,n+1:2*n-1)=c(n-i,1:n-1);c(n-i,2*n)='1';for j=1:i-1c(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));endendfor i=1:nh(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));endl=sum(p.*ll);%计算平均码长

第69页:信源哈夫曼编码·运行结果与分析

5.运行结果与分析在命令窗口中,只需调用函数文件huffman,计算结果如下。p=[0.30,0.10,0.21,0.09,0.05,0.25];[h,l]=huffman(p)h =%输出各个元素码字11100001001110110l =2.3800 %输出平均码长

第70页:信源哈夫曼编码(续)

由仿真结果可知,编码正确,平均码长为2.38。利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。6.思考题

  • (1)哈夫曼编码的目的是什么?
  • (2)哈夫曼编码是有损编码还是无损编码?

第71页:数字基带信号·实验目的

1.实验目的

  • (1)了解数字基带信号的常用码型及各种码型的特点。
  • (2)学习用MATLAB绘制不同数字基带码型的波形图和功率谱密度图,根据图形进一步分析掌握不同基带码型的特点。2.实验原理通信的根本任务是远距离传输信息,因而如何准确地传输数字信息是数字通信的一个重要组成部分。在数字传输系统中,通常其传输对象是二元数字信息,设计数字传输系统的基本考虑是选择一组有限的离散的波形来表示数字信息。这些离散波形可以是未经调

第72页:数字基带信号的MATLAB仿真(续)

制的不同电平信号,称为数字基带信号。在某些情况下,数字基带信号可以直接传输,称为数字信号基带传输。基带信道对所传输信号的电波形的要求如下。

  • (1)信号中必须携带主时钟成分,这对于研究位同步、载波同步等问题十分重要。
  • (2)要求低频分量少,没有直流分量。数字基带信号的电波形有单极性非归零码、单极性归零码、双极性非归零码、双极性归零码、差分波形等几种。由于数字基带信号是数字信息的电脉冲表示,不同形式的数字基带信号(又称为码型)具有不同的频谱结构和功率谱分布,合理地设计数

第73页:字基带信号以使数字信息变换为适合于给定信

字基带信号以使数字信息变换为适合于给定信道传输特性的频谱结构,又称为数字信息的码型转换问题。不同的码型有不同的优点,这里先给出码型表示二元序列的结果,然后再逐一介绍其优点和不足之处。1)单极性非归零码波形用电平1来表示二元信号中的1,用电平0来表示二元信号中的0,电平在整个码元的时间里不变,记为NRZ码。单极性非零码的优点是实现简单,但由于含有直流分量,在带限信道中传输不利,另外当出

第74页:现连续的0或连续的1时

现连续的0或连续的1时,电平长时间保持一个值,不利于提取时间信息以便获得同步。2)单极性归零码波形它与单极性非归零码的不同处在于输入二元信息为1时,给出的码元前半周期为1,后半周期为0,输入0则完全相同。单极性归零码频繁跳变,易于提取定时同步信息,直流分量少,性能要优于单极性非归零码。3)双极性非归零码波形它与单极性非归零码类似,用电平1表示二元信号中的1,用电平−1来表示二元信号0。双极性非归零码在0、1信息等概时没有直流分量,这是它相比

第75页:单极性非归零码的优点

单极性非归零码的优点。但是当出现连续的0或连续的1时,电平长时间保持在一个值,仍然具有不利于提取定时同步信息的缺点。4)双极性归零码波形此种码型比较特殊,它使用前半周期为1,后半周期为0来表示信息1;前半周期为−1,后半周期为0来表示0。因此它具有3个电平,严格说来是一种三元码(电平1,0,−1)。双极性归零码包含了丰富的时间信息,每一个码元都有一个跳变沿,便于接收方定时。同时对随机信号,信息1和0出现的概率相同,所以此种码元几乎没有直流分量。

第76页:数字基带信号·仿真思路

3.仿真思路用实验原理介绍的编码规则对二元信息序列100110000101进行相应的编码并输出编码后的波形,同时求出该波形的功率谱,根据功率谱分析不同基带码型在传输时的特点。4.程序代码1)单极性非归零码function y=snrz(x)%本函数实现将输入的一段二进制代码编为相应的单极性非归零码输出%输入x为二进制码,输出y为编好的码%给出计算每一个码元的点数,因为我们只有用离散的点来得出连续的函数表示

第77页:数字基带信号·程序代码

grid=300;t=0:1/grid:length(x);for i=1:length(x)%计算码元的值if(x(i)==1),%如果信息是1for j=1:grid,%该码元对应的点值取1y((i-1)*grid+j)=1;endelsefor j=1:grid,%反之,信息为0,码元对应点值取0y((i-1)*grid+j)=0;endendEndy =[y,x(i)];%为了画图,注意要将y序列加上最后一位

第78页:数字基带信号·程序代码

M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);%确定x轴和y轴的显示范围%采用了title命令来实现标记出各码元对应的二元信息title('1 0 0 1 1 0 0 0 0 1 0 1单极性不归零信号');subplot(2,1,2);w=-90:0.05:90;z=fftshift(abs(fft(y)));plot(w,z);title('单极性不归零信号幅度谱');axis([-5,5,0,1600]);2)单极性归零码function y = srz(x)

第79页:数字基带信号·程序代码

%本函数实现将输入的一段二进制代码编为相应的单极性归零码输出%输入x为二进制码,输出y为编好的码grid=300;t=0:1/grid:length(x);%给出相应的时间序列for i=1:length(x)%进行码型变换if(x(i)==1)%若输入的信息是1for j=1:grid/2y(grid/2*(2*i-2)+j)=1;%定义前半时间值为1y(grid/2*(2*i-1)+j)=0;%定义后半时间值为0endelsefor j=1:grid/2%反之,输入信息为0y(grid*(i-1)+j)=0;%定义所有时间值为0endendend

第80页:数字基带信号·程序代码

y =[y,x(i)];%为了画图,注意要将y序列加上最后一位M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);title('1 0 0 1 1 0 0 0 0 1 0 1单极性归零信号');subplot(2,1,2);w=-90:0.05:90;z=fftshift(abs(fft(y)));plot(w,z);title('单极性归零信号幅度谱');axis([-5,5,0,1600]);

第81页:双极性非归零码程序代码

3)双极性非归零码function y=dnrz(x)%本函数实现将输入的二进制代码编为相应的双极性非归零码输出%输入x为二进制码,输出y为编好的码grid=300;t=0:1/grid:length(x)for i=1:length(x)%计算码元的值if(x(i)==1)%如果信息是1for j=1:grid%该码元对应的点值取1y((i-1)*grid+j)=1;endelsefor j=1:grid %反之,信息为0,码元对应点值取-1y((i-1)*grid+j)=-1;endendend

第82页:数字基带信号·程序代码

y =[y,x(i)];%为了画图,注意要将y序列加上最后一位M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);title('1 0 0 1 1 0 0 0 0 1 0 1双极性不归零信号');subplot(2,1,2);w=-90:0.05:90;z=fftshift(abs(fft(y)));plot(w,z);title('双极性不归零信号幅度谱');axis([-5,5,0,1600]);

第83页:双极性归零码程序代码

4)双极性归零码function y = drz(x)%本函数实现将输入的二进制代码编为相应的双极性归零码输出%输入x为二进制码,输出y为编好的码grid=300;t=0:1/grid:length(x);%定义相应的时间序列for i=1:length(x)%进行编码if(x(i)==1)%若输入的信息是1for j=1:grid/2y(grid/2*(2*i-2)+j)=1;%定义前半时间值为1y(grid/2*(2*i-1)+j)=0;%定义后半时间值为0endelsefor j=1:grid/2%反之,输入信息为0

第84页:数字基带信号·程序代码

y(grid/2*(2*i-2)+j)=-1;%定义所有时间值为-1y(grid/2*(2*i-1)+j)=0;%定义后半时间为0endendendy =[y,x(i)];%为了画图,注意要将y序列加上最后一位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 0 0 1 1 0 0 0 0 1 0 1双极性归零信号');subplot(2,1,2);

第85页:数字基带信号·程序代码

w=-90:0.05:90;z=fftshift(abs(fft(y)));plot(w,z);title('双极性归零信号幅度谱');axis([-5,5,0,1600]);5.运行结果与分析单极性不归零信号的码型及功率谱密度图如图3.15所示。单极性归零信号的码型及功率谱密度图如图3.16所示。双极性不归零信号的码型及功率谱密度图如图3.17所示。双极性归零信号的码型及功率谱密度图如图3.18所示。

第86页:数字基带信号·运行结果图

图3.15单极性不归零信号图3.16单极性归零信号

第87页:数字基带信号·运行结果图

图3.17双极性不归零信号图3.18双极性归零信号

第88页:数字基带信号的MATLAB仿真(续)

由仿真的结果图可以看到由不同的编码规则得到的4种不同码型的码型图。其特点与前述一致,由其功率谱可见,单极性不归零信号具有很大的直流分量且在抽样点上(−0.5和0.5)没有定时提取脉冲;单极性归零信号的直流分量要远远小于单极性不归零信号的直流分量,且在每个抽样点上有定时提取脉冲;双极性不归零信号没有直流分量但其幅度谱功率较大,也没有定时提取脉冲;双极性归零信号幅度谱功率小,且有很频繁跳变的定时脉冲序列。因此,从传输恢复及定时提取的角度来讲,双极性归零信号的性能最好。

第89页:数字基带信号·思考题

6.思考题

  • (1)为什么针对一个x(i),要有grid个y(i)与之对应?
  • (2)为什么每次编码结束后要加上一句y=[y,x(i)]?
  • (3)单极性不归零信号最大的缺点是存在直流分量,为改正其缺点而提出的AMI码即使在0、1信息不等概时也能消除直流分量。请用该节所学知识绘出数字序列“1 0 0 1 1 0 0 0 0 1 0 1”所对应的AMI码的波形。

第90页:AMI码与HDB3码的编码·实验目的

1.实验目的

  • (1)学习HDB3码的编码与译码规范。
  • (2)通过MATLAB编程实现HDB3码的编码与译码。2.实验原理基带信号的选择除了对电波形有要求外,对传输码型也有要求。传输码的结构应具有以下特性。
  • (1)能从其相应的基带信号中获取定时信息。
  • (2)相应的基带信号无直流成分或有很少的低频成分。
  • (3)不受信源统计特性的影响。
  • (4)尽可能地提高传输码型的传输效率。
  • (5)具有内在的检错能力。

第91页:常用的满足或部分满足以上传输特性的码有A

常用的满足或部分满足以上传输特性的码有AMI码、HDB3码、PST码、双相码、Milelr码、CMI码等。最常用的是AMI码和HDB3码。AMI码是传号交替反转码,是PCM24路的传输码型。编码规则如下:代码中的0仍变换为传输码的0,代码中的1交替地变换为传输码的+1−1,…。AMI码的主要缺点是连“0”码太多,影响定时时钟的提取。HDB3码的全称为三阶高密度双级性码,是在AMI码基础上为克服长连“0”难以提取定时信息而改进的一种码型。HDB3码改进的基本思想是:不让AMI码的连“0”太多,当连续出现4个“0”

第92页:码时,则人为地添加破坏脉冲,用V表示

码时,则人为地添加破坏脉冲,用V表示;为保证无直流,V脉冲应正负交替插入;同时人为添加的破坏脉冲还应与信码有严格区别,以便在接收端能正确恢复原信息。1) HDB3码的编码规则

  • (1)当信码连“0”个数不超过3时,HDB3码按AMI码规则编码。
  • (2)当信码连“0”个数为4个以上时,每4个为一组,用取代节000V或B00V代替,B是附加脉冲,V是破坏脉冲。V和前面相邻的非“0”码同极性,之后的“1”码交替反转,V也满足极性交替。
  • (3)当相邻V之间有偶数个传号时,用B00V代替,

第93页:B与前一个非“0”码反极性

B与前一个非“0”码反极性;当相邻V之间有奇数个传号时,用000V代替。2) HDB3码的译码原理先找到破坏脉冲V,再找到附加脉冲,然后将其去掉,即凡连续出现两个同极性的脉冲时,后一个脉冲一定是破坏脉冲,译码时先把它变为0;其次是每发现一个破坏脉冲,即从该破坏脉冲往前数至第3个码元位,如有脉冲,必然是附加脉冲,也应变为0;最后经过全波整流,便能恢复原信息。3.仿真思路

  • (1)给出随机序列Xn。

第94页:AMI码与HDB3码的编码与译码(续)

(2)把原序列变成AMI码
每过一个1就使原来的1变一次号。(3)检测是否连续4个码元都是0,如果是就插入破坏码V,V用2表示。(4)检测相邻V之间是否为偶数个传号,如果是就插入不带符号的B,B用3表示。(5)实现符号B的极性与前一个非0极性相反,B后面第3个就是接下来的V,实现V后的符号再交替,便实现了HDB3码的编码。(6)译码时,每个V(2)都变成0,V前面第3个有可能是B(3),有可能也是0,恢复为0,得到解码后的恢复序列,解码与原码比较全为0则解码正确。

第95页:AMI码与HDB3码的编码·程序代码

4.程序代码1) AMI码的编码Xn=[1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0];%输入单极性码yn=xn;%输出yn初始化num=0;%计数器初始化for k=1:length(xn)if xn(k)==1num=num+1;%“1”计数器if num/2 == fix(num/2)%奇数个1时输出-1,进行极性交替yn(k)=1;elseyn(k)=-1; endendend%AMI码的解码,对AMI码全波整流即可实现解码decodeAMI=abs(yn);

第96页:HDB3码的编码程序代码

2) HDB3码的编码num=0;%连零计算器初始化yn=yn;%输出初始化sign=0;%极性标志初始化为0V=zeros(1,length(yn));%V脉冲位置记录变量B=zeros(1,length(yn));%B脉冲位置记录变量for k=1:length(yn)if yh(k) == 0num=num+1;%连0个数计算if num == 4 %如果4连0num=0; %计数器清零yh(k)=1*yh(k-4);%让0000的最后一个0改变为与前一个非零符号相同极性的符号V(k)=yh(k);%V脉冲位置记录

第97页:AMI码与HDB3码的编码·程序代码

if yh(k) == sign%若当前V符号与前一个V符号的极性相同yh(k)=-1*yh(k);%则让当前V符号极性反转,yh(k-3)=yh(k);%添加B符号,与V符号同极性B(k-3)=yh(k);%B脉冲位置记录V(k)=yh(k);%V脉冲位置记录yh(k+1:length(yn))=(-1)*yh(k+1:length(yn));end%并让后面的非零符号从V符号开始再交替变化sign=yh(k);%记录前一个V符号的极性endelsenum=0;%当前输入为1,则连0计数器清零endendre=[xn',yn',yh',V',B'];%结果输出:xn,AMI,HDB3,V&B符号

第98页:HDB3码解码程序代码

3) HDB3码解码input=yh;%HDB3码输入decode=input;%输出初始化sign=0;%极性标志初始化for k=1:length(yh)if input(k)~=0if sign==yh(k)%如果当前码与前一个非零码的极性相同decode(k-3:k)=[0 0 0 0];%则该码判为V码并将*00V清零endsign=input(k);%极性标志endenddecode=abs(decode);%整流error=sum([xn'-decode']);%解码的正确性检验,作图

第99页:AMI码与HDB3码的编码·程序代码

figure(1);stairs([0:length(xn)-1],xn);axis([0 length(xn)-2 2]);title('Xn的单极性不归零波形');figure(2);subplot(2,1,1);stairs([0:length(xn)-1],yn);axis([0 length(xn)-2 2]);title('AMI码的编码波形');subplot(2,1,2);stairs([0:length(xn)-1],decodeAMI);axis([0 length(xn)-22]);title('AMI码的解码波形');figure(3);subplot(2,1,1);stairs([0:length(xn)-1],yh);axis([0 length(xn)-2 2]);title('HDB3码的编码波形');subplot(2,1,2);stairs([0:length(xn)-1],decode);axis([0 length(xn)-22]);title('HDB3码的解码波形');

第100页:AMI码与HDB3码的编码·运行结果与分

5.运行结果与分析Xn的单极性不归零波形如图3.19所示。Xn编为AMI码的波形及其解码波形如图3.20所示。Xn编为HDB3码的波形及其解码波形如图3.21所示。原始信号、AMI码、HDB3码的幅度谱如图3.22所示。图3.19、图3.20、图3.21和图3.22为仿真得到的曲线。图中分别给出了输入信号Xn、HDB3编码以及HDB3码解码波形。可以从图中清晰地看出仿真结果和理论分析的结果一致,解码后的波形与输入信号码形一致,成功地进行了HDB3码的编码与解码。由HDB3码的波形图可以看出,波形为正与波形为负的个数几乎一样多,即使0、1不等概

第101页:Xn的单极性不归零波形

的时候,整个波形中不包含直流分量,且无长连0现象,便于定时信息的提取。HDB3码的编解码都很简单,适合作为基带信号的传输码型。由信号的幅度谱可以看出,AMI码和HDB3码的幅度谱中的直流分量明显要小于原始信号幅度谱中的直流分量,且HDB3码的幅度谱更均匀。这使得AMI码和HDB3码从幅度谱的角度更适合在信道中传输。图3.19Xn的单极性不归零波形

第102页:AMI码与HDB3码的编码·运行结果图

图3.20图3.21

第103页:原始信号

图3.22原始信号、AMI码、HDB3码的幅度谱

第104页:AMI码与HDB3码的编码·思考题

6.思考题

  • (1)AMI码的解码规则是什么?请针对上述程序中所得到的AMI码进行解码,画出解码后的波形图。
  • (2)AMI码是否具有检错能力,是否具有纠错能力?HDB3码是否具有检错能力?是否具有纠错能力?
  • (3)在解码之前,人为地使编好的码中的某一位出错,研究AMI码和HDB3码是否具有误码增殖现象。

第105页:模拟信号幅度调制解调及噪声·实验目的

1.实验目的

  • (1)学习AM信号的调制解调原理并对其进行实现。
  • (2)分析噪声对AM信号的影响,掌握噪声在通信系统中的仿真。2.实验原理为了合理使用频带资源,提高通信质量,需要使用调制技术,对输入信号进行调制,使波形满足通信媒体的频带要求;接收端需要对接收的波形进行解调,以恢复原始信号。根据调制信号的不同,可将调制分为模拟调制和数字调制。模拟调制的输入信号为连续变化的

第106页:模拟量,数字调制的调制信号是离散的数字量

模拟量,数字调制的调制信号是离散的数字量。若基带信号为m(t),则幅度调制信号一般可表示成:设调制信号m(t)的频谱为M(ω),根据上式不难得到已调信号的频谱:由以上表示式可见,对于幅度已调信号,在波形上,它的幅度随基带信号变化而呈正比变化;在频谱结构上,它的频谱完全是基带信号频谱结构在频域内的简单搬移。线性调制的一般模型如图3.23所示:它由一个相乘器和一个频率响应为H(ω)的带通滤波器组

第107页:模拟信号幅度调制解调及噪声对其影(续)

成。AM包络检波法解调模型如图3.24所示。图3.23图3.243.仿真思路

  • (1)首先利用载波对信号进行调制,采用常规的AM调制方式。
  • (2)利用包络检波的方式解调。
  • (3)加入噪声。4.程序代码

第108页:主程序程序代码

1)主程序echo ont0=0.15;%信号m(t)ts=0.001;%采样间隔fc=250;%载频a=0.85;%调制指数fs=1/ts;%采样频率t=[0:ts:t0];%时间取值df=0.25;m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];%信号c=cos(2*pi*fc.*t);%载波m_n=m/max(abs(m));%单位化信号[M,m,df1]=fftseq(m,ts,df);%傅里叶变化f=[0:df1:df1*(length(m)-1)]-fs/2;%频率向量u=(1+a*m_n).*c;%已调信号

第109页:模拟信号幅度调制解调及噪声·程序代码

[U,u,df1]=fftseq(u,ts,df);%傅里叶变化env=env_phas(u);%包络检波dem1=2*(env-1)/a;signal_power=spower(u(1:length(t)));%已调信号的功率noise_power=signal_power/100;%噪声功率noise_std=sqrt(noise_power);noise=noise_std*randn(1,length(u));r=u+noise;%添加噪声[R,r,df1]=fftseq(r,ts,df);env_r=env_phas(r);%包络检波dem2=2*(env_r-1)/a;%有噪声时的解调信号pausesubplot(2,1,1)plot(t,m(1:length(t)))

第110页:模拟信号幅度调制解调及噪声·程序代码

axis([0 0.15-2.1 2.1])xlabel('时间')title('消息信号')pauseclfsubplot(2,1,1)plot(t,u(1:length(t)))axis([0 0.15-2.1 2.1])xlabel('时间')title('已调信号')subplot(2,1,2)plot(t,env(1:length(t)))xlabel('时间')title('已调信号的包络')pause

第111页:模拟信号幅度调制解调及噪声·程序代码

clfsubplot(2,1,1)plot(t,dem1(1:length(t)))xlabel('时间')title('解调后的信号')subplot(2,1,2)plot(t,dem2(1:length(t)))xlabel('时间')title('有噪声的解调后的信号')pauseclfsubplot(2,1,1)length(m)plot(f,fftshift(abs(M)));axis([-400,400,0,150]);

第112页:模拟信号幅度调制解调及噪声·程序代码

title('原始信号的幅度谱')subplot(2,1,2)plot(f,fftshift(abs(U)));axis([-400,400,0,100]);title('已调信号的幅度谱');2)傅里叶变换函数function[M,m,df]=fftseq(m,ts,df)fs=1/ts;if nargin==2%检测参数个数n1=0;elsen1=fs/df;endn2=length(m);

第113页:模拟信号幅度调制解调及噪声·程序代码

n=2^(max(nextpow2(n1),nextpow2(n2)));M=fft(m,n);m=[m,zeros(1,n-n2)];df=fs/n;3)求信号功率的函数function p=spower(x)%求信号功率的函数p=(norm(x)^2)/length(x);4)包络检波函数function [v,phi]=env_phas(x,ts,f0)if nargout==2z=loweq(x,ts,f0);phi=angle(z);endv=abs(hilbert(x));

第114页:求信号希尔伯特变换的函数程序代码

5)求信号希尔伯特变换的函数function x1=loweq(x,ts,f0)t=[0:ts:ts*(length(x)-1)];z=hilbert(x);x1=z.*exp(-j*2*pi*f0*t);5.运行结果与分析原始的消息信号如图3.25所示。图3.25原始的消息信号

第115页:已调信号及其包络

已调信号及其包络如图3.26所示。图3.26已调信号及其包络

第116页:利用上面的方法可以实现基带信号的频带传输

利用上面的方法可以实现基带信号的频带传输,实现调制过程,通过包络检波的方式可以恢复原始信号,加入噪声后恢复出来的信号有较明显的失真。从此实验可以看到噪声对信号的影响。由信号的频谱及已调信号的频谱可以看出,已调信号与原始信号的频谱具有相似的频谱形状,只是频谱搬移到载频fc=250附近,因此幅度调制是线调制;另外,已调信号在载频位置有一个很大的载波脉冲,便于同步解调时的载波提取。因此,除了包络检波波外,幅度调制还可以采用相干解调法解调。原始信号的频谱及已调信号的频谱如图3.27所示。有噪声的解调后的信号如图3.28所示。

第117页:模拟信号幅度调制解调及噪声·思考题

6.思考题

  • (1)除了包络检波法,还有什么方法可以解调?
  • (2)试着用相干检测法解调,并计算信噪比。图3.27图3.28

第118页:单边带调幅系统的建模仿真·实验目的

1.实验目的

  • (1)学习模拟信号的幅度调制原理及分类。
  • (2)了解单边带调制的原理及其MATLAB实现。2.实验原理模拟调制是以正弦波为载波的调制方式,它通常分为幅度调制(AM)、频率调制(FM)和相位调制(PM)。幅度调制又可分为常规幅度调制(AM)、抑制载波双边带幅度调制(DSB-AM)、抑制载波单边带幅度调制(SSB-AM)和正交幅度调制(QAM)等。对调制进行仿真模拟有两种选择:对基带信号或高频带通信号进行调制仿真。由于载波信号的

第119页:频率远高于输入信号

频率远高于输入信号,根据抽样定理,抽样频率必须至少大于两倍的载波频率才能正确地恢复信号,因此对高频信号的模拟仿真效率低、速度慢。为了加速模拟仿真,一般使用基带仿真,也称为低通对等方法。基带仿真使用带通信号的复包络。去掉双边带调制的一边就得到单边带调制。依据所保留的边带是上边还是下边,可以分为USSB和LSSB两种不同的方式。双边带调幅所产生的上下两个边带包含的信息相同,所以只需要传输其中任意一个边带就可以了。将DSB信号中的某一个边带去除,所得到的就是单边带调制信号。单边带信号的突出优势是节约

第120页:单边带调幅系统的建模仿真(续)

了传输频带。另外,对于话音信号的单边带解调,可以不用恢复载波相位,甚至接收机的本地载波与发射机的发送载波之间存在少量频率差,话音信号的解调输出失真也不大。设基带信号以傅里叶级数表示为:则以为载波的双边带输出是:其中,第一项为上边带,第二项为下边带。将第一项从中分离出来,就得到单边带(上边带)的调

第121页:单边带调幅系统的建模仿真(续)

制输出,即相应地,下边带调制输出为:解调就是从调制信号中提取消息信号。对于常规幅度调制(AM),一般用包络检波进行解调。在这种解调方式中,接收机对载波频率和相位精度的了解是无关紧要的,所以解调过程相对简单。对于DSB-AM调制和SSB-AM调制,用相干解调的方法,要求在接收机中有一个与载波同频同相的信号。DSB-AM调制和SSB-AM调制的相干解调:先将其与一个同频同相的正弦载波信号进行混频,然后将混频结果通过一个低通滤波器来实现。接收机中产生所需要的正弦波振荡器,为本地振荡器。

第122页:单边带调幅系统的建模仿真(续)

相干解调器的相乘输出信号为
经过低通滤波器后,高频分量被滤除,最后得到解调输出为:其中Δf和Δϕ分别为本地载波与发送端解调载波之间的频率误差和相位误差。对比发送基带信号m(t),解调器输出信号中的频率分量存在一定的频率偏移和相位偏移。人耳对于话音波形的相位失真是不敏感的,频率失真会影响到语音音色,但若频率偏移较小,对语音信号的可懂度就不会造成大的影响。

第123页:单边带调幅系统的建模仿真(续)

在实际的话音单边带通信机中,一般采用一个高稳定度的晶体振荡器或频率合成器来产生本地解调载波,而不需要像双边带的解调那样需要用锁相环来恢复载波,这就大大降低了单边带接收机的技术复杂度和成本。3.仿真思路在利用MATLAB进行调制/仿真时,既可以采用自定义函数进行调制/仿真,也可以调用MATLAB所提供的函数进行仿真。本例利用自定义函数进行调制/仿真。4.程序代码1)主程序

第124页:单边带调幅系统的建模仿真·程序代码

t0=0.15;%信号持续时间ts=0.001;%采样时间间隔Fc=250;%载波频率Fs=1/ts;%采样频率df=0.3;%频率分辨率t=[0:ts:t0];%时间矢量m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];c=cos(2*pi*Fc*t);%载波信号b=sin(2*pi*Fc*t);ussb=m.*c-imag(hilbert(m)).*b;%上边带调制信号lssb=m.*c+imag(hilbert(m)).*b;%下边带调制信号[M,m,dfl]=fft_seq(m,ts,df);%傅里叶变化M=M/Fs;[U,ussb,dfl]=fft_seq(ussb,ts,df);

第125页:单边带调幅系统的建模仿真·程序代码

U=U/Fs;[L,lssb,dfl]=fft_seq(lssb,ts,df);f=[0:dfl:dfl*(length(m)-1)]-Fs/2;%频率矢量subplot(2,2,1);plot(t,ussb(1:length(t)));%上边带调制信号title('上边带调制信号');subplot(2,2,2);plot(t,lssb(1:length(t)));title('下边带调制信号');%下边带调制信号subplot(2,2,3);plot(f,abs(fftshift(U)));title('上边带调制信号频谱');%上边带调制信号频谱subplot(2,2,4);plot(f,abs(fftshift(U)));title('下边带调制信号频谱');%下边带调制信号频谱

第126页:单边带调幅系统的建模仿真·程序代码

2) fft_seq函数%注意:调用傅里叶变换函数fft_seq,此函数原代码如下。function[M,m,df]=fft_seq(m,ts,df)%[M,m,df]=fft_seq(m,ts,df)%[M,m,df]=fft_seq(m,ts,)%M为输入序列m的傅里叶变换,ts为抽样间隔,输入df为频率分辨率%输出序列m按要求的频率分辨率df进行补零后的序列%输出df为最终的频率分辨率fs=1/ts;if nargin==2, n1=0;else, n1=fs/df;endn2=length(m);

第127页:单边带调幅系统的建模仿真(续)

n=2^(max(nextpow2(n1),nextpow2(n2)));M=fft(m,n);m=[m,zeros(1,n-n2)];df=fs/n;5.运行结果与分析由图3.29可见,幅度谱随基带信号变化而成正比地变化;在频谱结构上,它的频谱是基带信号频谱结构在频域内的简单搬移。幅度调制又称为线性调制。但应注意:这里的“线性”并不是已调信号与调制信号之间符合线性变换关系。事实上,任何调制过程都是一种非线性的变换过程。而且单边带调制信号所占频谱的宽度是双边带的一半,节省了频谱资源。是一种频谱利用率较高的传输方式。

第128页:单边带调幅系统的建模仿真·思考题

6.思考题

  • (1)单边带调制的优势是什么?
  • (2)单边带调制是如何实现的?图3.29单边带调制信号及其频谱

第129页:双边带调幅系统的建模仿真·实验目的

1.实验目的

  • (1)学习模拟信号的幅度调制原理及分类。
  • (2)了解双边带调制的原理及其MATLAB实现。2.实验原理1)双边带幅度调制(DSB-AM)在DSB-AM中,已调信号的时域表示为:为了讨论方便取初相为0。对u(t)做傅里叶变换,即可得到信号的频域表示:

第130页:双边带调幅系统的建模仿真(续)

2)双边带DSB-AM调制信号的相干解调调制信号与接收机本地振荡器所产生的正弦信号相乘,就可以得混频器输出信号为:其傅里叶变换为:可见混频器的输出由一个低频分量和±fc处的两个高频分量组成。将y(t)通过带宽为W的低通滤波器,高频分量被滤除,而与消息信号成正比的低频分量被解调。如果调制相位φc未知,则需使用Costas环解调方法来恢复接收信号的相位信息。Costas环如图3.30所示。

第131页:Costas环解调3.仿真思路假设消息信

图3.30Costas环解调3.仿真思路假设消息信号如右。用信号m(t)以DSB-AM方式调制载波所得到的已调制信号记为u(t)。设t0=0.15s,fc=250Hz。比较消息信号与已调信号,并绘制它们的频谱。

第132页:调制信号接收机本地振荡器所产生的正弦信号

调制信号接收机本地振荡器所产生的正弦信号cos(2πfct)相乘,可得混频器输出为:傅里叶变换为:将y(t)通过带宽为W的低通滤波器,高频分量被滤除,而与消息信号成正比的同相分量被解调。绘出消息信号的时域,频域曲线。4.程序代码1)双边幅度调制t0=0.15;ts=0.001;%信号持续时间Fc=250;%采样时间间隔Fs=1/ts;%载波频率

第133页:双边带调幅系统的建模仿真·程序代码

df=0.3;%采样频率t=[0:ts:t0];%时间矢量m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];c=cos(2*pi*Fc.*t);%载波信号u=m.*c;%调制信号[M,m,dfl]=fft_seq(m,ts,df);%傅里叶变换M=M/Fs;[U,u,dfl]=fft_seq(u,ts,df);U=U/Fs;[C,c,df1]=fft_seq(c,ts,df);f=[0:dfl:dfl*(length(m)-1)]-Fs/2;%频率矢量subplot(2,2,1);plot(t,m(1:length(t)));title('未调制信号');

第134页:双边带调幅系统的建模仿真·程序代码

subplot(2,2,2); plot(t,u(1:length(t)));title('已调制信号');subplot(2,2,3); plot(f,abs(fftshift(M)));title('未调制信号频谱');subplot(2,2,4); plot(f,abs(fftshift(U)));title('已调制信号频谱');2)傅里叶变换函数fft-seqfunction[M,m,df]=fft_seq(m,ts,df)fs=1/ts;if nargin==2 n1=0;else n1=fs/df;endn2=length(m);n=2^(max(nextpow2(n1),nextpow2(n2)));M=fft(m,n);

第135页:双边带调幅系统的建模仿真·程序代码

m=[m,zeros(1,n-n2)];df=fs/n;3)相干解调t0=0.15;%信号持续时间ts=1/1500;%采样时间间隔Fc=250;%载波频率Fs=1/ts;%采样频率df=0.3;%频率分辨率t=[0:ts:t0];%时间矢量m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];c=cos(2*pi*Fc.*t);%载波信号u=m.*c;%调制信号y=u.*c;%混频[M,m,dfl]=fft_seq(m,ts,df);%傅里叶变换M=M/Fs;%缩放

第136页:双边带调幅系统的建模仿真·程序代码

[U,u,dfl]=fft_seq(u,ts,df);U=U/Fs;[Y,y,dfl]=fft_seq(y,ts,df);Y=Y/Fs;f_cutoff=150;%滤波器截止频率,也可用MATLAB的工具FDATOOL设计n_cutoff=floor(150/dfl);%设计滤波器f=[0:dfl:dfl*(length(m)-1)]-Fs/2;%频率矢量H=zeros(size(f));H(1:n_cutoff)=2*ones(1,n_cutoff);H(length(f)-n_cutoff+1:length(f))=2*ones(1,n_cutoff);DEM=H.*Y;%滤波器输出频谱dem=real(ifft(DEM))*Fs;%滤波器的输出subplot(2,2,1);plot(t,m(1:length(t)));title('未调制信号');

第137页:双边带调幅系统的建模仿真·程序代码

subplot(2,2,2);plot(t,dem(1:length(t)));title('解调信号');subplot(2,2,3);plot(f,abs(fftshift(M)));title('未调制信号频谱');subplot(2,2,4);plot(f,abs(fftshift(DEM)));title('已调制信号频谱');5.运行结果与分析图3.31是发射信号调制仿真得到的曲线。由图可以看出调制增大了信号的发射功率,提高了发射功率的利用率。图3.32是对接收信号进行解调得出的频谱曲线。解调信号与未调信号形状非常

第138页:相似,频谱形状基本相同,能很好地把信号恢

相似,频谱形状基本相同,能很好地把信号恢复出来。所以,利用DSB-AM对发射信号进行调制是成功的,它使人们能合理使用频带资源,提高了信噪比,降低了误码率,提高了通信质量。6.思考题

  • (1)与单边带调制相比,双边带调制有什么优点和缺点?
  • (2)详述双边带解调原理。

第139页:双边带调幅系统的建模仿真·运行结果图

图3.31图3.32

第140页:二进制数字调制·实验目的

1.实验目的

  • (1)学习二进制数字调制以及其实现方法。
  • (2)了解线性调制时信号的频谱变化。2.实验原理1)二进制振幅键控的基本原理振幅键控是载波的振幅随着数字基带信号而变化的数字调制。当数字基带信号为二进制时,则为二进制振幅键控(2ASK)。二进制振幅键控信号可以表示成具有一定波形形状的二进制序列与正弦型载波的乘积,即

第141页:二进制数字调制(续)

式中
g(t)是持续时间为Ts的脉冲波形.an的取值满足:二进制基带信号用B(t)表示,则:因此:2)二进制频移键控的基本原理频移键控是载波的频率随着数字基带信号而变化的数字调制。当数字基带信号为二进制时,则为二进制频移键控(2FSK)。2FSK信号的时域表达式为:

第142页:二进制数字调制(续)

3)二进制相移键控的基本原理二进制相移键控是载波的相位随着二进制数字基带信号而变化,而振幅和频率保持不变。2PSK信号的时域表达式为:若g(t)是幅度为1持续时间为Ts的矩形脉冲,则在一个码元间隔内有:这种以载波的不同相位直接表示相应二进制数字信号的调制方式,通常称为绝对相移方式。4)频谱分析原理先对信号x(t)采样得到采样序列x(n),然后对

第143页:信号进行N点的FFT变换

信号进行N点的FFT变换,N要大于等于采样点数。序列进行FFT后:若采样频率为fs,则频率分辨率为:Δ=fs/N频率分辨率表征了采样序列进行FFT后,相邻两条谱线之间的间隔。对信号进行FFT后,找出幅度最大的一条谱线所在的位置,然后通过f=k⋅Δ计算出信号频率。3.仿真思路因为MATLAB的操作对象是数组,本身不能产生连续的信号,因此假设信号持续了10秒,每个二进制信号持续1秒,对信号从0时刻开始每间隔0.01秒进行采样,则从0.01秒起一共有1000个采样点,

第144页:二进制数字调制(续)

采样频率为100,采样时间为0.01,这些采样点与10个二进制信号映射,假设采样信号用数组m表示,则每100个点表示一个二进制信号,也就是每个信号持续了1秒。由此用plot命令可以画出连续的信号。进行调制时,在试验中为了便于观察信号的变化,故将载波频率f1和f2取得比较小,试验中f1=1,f2=2。因此载波cos2πft当t=1时,两个载波分别表示1秒内一个完整的余弦波和两个余弦波这样的两个载波。进行2ASK调制时,只需把基带采样信号m与载波信号一一对应相乘就可以了。

第145页:进行2FSK时

进行2FSK时,因为“0”和“1”对应不同的载波,这里想到用一个开关函数来区分0和1,因此这里用cos0.5πm和sin 0.5πm来充当开关函数,在m=1时,cos0.5πm = 0,sin 0.5πm =1,当m=0时,cos0.5πm =1,sin 0.5πm = 0。这样只需要在两个开关函数后乘上对应的载波,然后相加就可以实现2FSK的调制了。进行2PSK时,首先用2*m−ones(1,length(m))将0和1映射成为−1和1,这样将信号与载波一一对应相乘就可以实现2PSK。进行谱分析时,先对基带信号m、2ASK、2FSK、2PSK信号进行FFT变换,试验中采样信号长度为

第146页:二进制数字调制(续)

1000,这里采用N=1000点的FFT,然后找出变换后信号幅度最大的点所在位置,计算出对应的频率。试验中,Δ=0.01,给出的图中画出的计算过的f和对应的信号傅里叶变换的幅度。鉴于基带信号一般是只含有直流分量和少数的低频分量和傅里叶变换的共轭性质,因此给出0到0.5fs的频谱。其他的给出了0到3的频谱。对于PSK,信号的相位增加了π。由于PSK相当于把原始基带信号中的0映射成为了−1,故可以将PSK看成是两倍的ASK信号减去一个长度为采样长度N的载波信号。故psk=2ask-ones(1,N),对此式做傅里叶变换,可得PSK信号的频谱生成图。

第147页:二进制数字调制·程序代码

4.程序代码1)主程序clcclear allclose all%产生比特信号fs=100;%采样频率ts=1/fs;t=0.01:ts:10;a=[1 0 1 1 0 0 1 1 0 1];m=a(ceil(t));subplot(411);plot(t,m)title('产生十比特二进制比特序列');

第148页:二进制数字调制·程序代码

axis([0,10,-1.5,1.5]);%*************调制************%f1=1;%载波频率f2=2;tzxh1=cos(2*pi*f1*t);tzxh2=cos(2*pi*f2*t);%2FSK调制情况下另一载波%**************2ASK调制************%ask=m.*tzxh1;subplot(412);plot(t,ask)title('2ASK调制波形');axis([0,10,-1.5,1.5]);%**************2FSK调制************%fsk=cos(m*(pi/2)).*tzxh1+sin(m*(pi/2)).*tzxh2;subplot(413);

第149页:二进制数字调制·程序代码

N=length(m1);k=0:N-1;f=k/10;f=f-(N-1)/20;figure(1);subplot(2,1,1); plot(f,m1);axis([-5,5,0,600]);title('基带信号的幅度谱');subplot(2,1,2); plot(f,abs(ask1));title('2ASK信号的幅度谱');axis([-5,5,0,300]);figure(2);subplot(2,1,1); plot(f,abs(fsk1));title('2FSK信号的幅度谱');axis([-5,5,0,300]);

第150页:二进制数字调制·程序代码

subplot(2,1,2);plot(f,abs(psk1));title('2PSK信号的幅度谱');axis([-5,5,0,300]);2) PSK信号频谱由ASK信号和载波信号频谱叠加而成clcclear allclose all%产生比特信号fs=100;%采样频率ts=1/fs;N=1000;k=0:N-1;f=k*fs/N;t=0.01:ts:10;

第151页:二进制数字调制·程序代码

a=[1 0 1 1 0 0 1 1 0 1];m=a(ceil(t));f1=1;tzxh1=cos(2*pi*f1*t);ask=m.*tzxh1;m1=2*m-ones(1,N);psk=m1.*tzxh1;Y1=fft(2*ask,N);Y2=fft(-tzxh1,N);Y3=Y1+Y2;Y4=fft(psk,N);plot(f,Y1,'-. b'); hold onplot(f,Y2,'--r'); hold onplot(f,Y3,'*-g'); hold on

第152页:二进制数字调制·程序代码

plot(f,Y4,'>-k')axis([0 3-600 600])legend('2*2ASK信号频谱Y1','载波频谱Y2','Y1+Y2','PSK信号频谱')xlabel('f');grid on5.运行结果与分析图3.33和图3.34分别画出了基带信号和频带信号的时域图和部分频域图。从图3.33可以看出,用单极性不归零码表示的基带信号正确地调制成了载波频率为1和2的ASK信号,FSK信号和PSK信号。

第153页:二进制数字调制·运行结果图

图3.33调制信号从图3.34可以看出,对于基带信号,频谱幅度比较高的都集中在低频内,符合基带信号频谱

第154页:二进制数字调制·运行结果图

图3.34已调信号的频谱图

第155页:二进制数字调制(续)

特征;对于2ASK信号,幅度最大的点出现在频率为1的位置,也符合试验中的参数;对于2FSK信号,幅度最大和次大的频率分别在频率为1和2的位置,故也符合试验中的参数。对于2PSK信号,通过计算载波频率f1所在的点的2倍ASK信号和长度为N的直流信号的傅里叶变换的差值,即2×(299.41+18.837i)−(499.01+31.395i)=99.8100+6.2790i,而PSK在载波f1处的傅里叶变换为99.803+6.2791i。然后在PSK的傅里叶变换中找这个差值就可以确定载波的频率,通过验证可以得到试验结果符合要求。

第156页:二进制数字调制(续)

从下图可以看出,PSK信号的频谱完全可以由2倍的ASK信号和载波信号的频谱相减得到。对应的载波频率f1的谱线幅度是6.思考题

  • (1)2ASK、2FSK、2PSK这3种调制方式的频谱组成如何?哪个频带利用率最差?
  • (2)考虑3种调制方式的解调,并用MATLAB实现。

第157页:2ASK调制与解调·实验目的

1.实验目的

  • (1)熟悉数字信号的产生和调制解调原理。
  • (2)会利用二进制键控法实现基带数字信号与频带数字信号之间的相互变换。2.实验原理1)2ASK调制原理2ASK又称为二进制启闭键控,它以单极性不归零码来控制载波的开启和关闭,使载波时断时续地输出。它是数字调制中出现最早,也是最简单的,是其他数字调制的基础。2ASK信号产生的原理框图如图3.36所示。

第158页:2ASK调制与解调·运行结果图

图3.36 2ASK信号产生的原理框图假设二进制信源{bn}的序列值为1或0,发送滤波器的冲击响应为g(t),则二进制序列经过发送成形滤波器后的基带信号与载波相乘,即可得到2ASK信号:式中:g(t)是持续时间为Ts的矩形脉冲,ωc为载波频率,bn为二进制数字。若令则有

第159页:2ASK信号的解调方式有相干解调和包络检

2ASK信号的解调方式有相干解调和包络检波的非相干解调两种。2)相干解调相干解调也称为同步解调,其原理是从接收信号中提取离散的载波分量,使得所恢复的载波与接收的信号同频同相,然后再将恢复载波与接收信号相乘,经过低通滤波器后,消除二倍频分量,最后再对信号经过采样判决即可恢复出所发送的数据信号。其结构图如下图所示。

第160页:2ASK调制与解调(续)

当发送信息比特位为“1”时,输入的2ASK信号为Acosωct,则经过相干解调后的输出信号为y(t)=A + nc(t),这里A为信号幅度,nc(t)为输出信号中的噪声成分。当发送信息比特为“0”时,输入的信号为“0”,则输出信号为y(t)=nc(t)。因此判决电平取A/2,大于A/2判为“1”码,小于A/2判为“0”码。3)非相干解调非相干解调主要利用包络检波,原理简单。其优点是:不需要载波提取电路,实现简单。其结构图如下图所示。

第161页:2ASK调制与解调(续)

假设接收端的信号为r(t),其中V1(t)和V0(t)分别为发送“1”和“0”的接收信号包络,应该在它们的眼图最大睁开处进行周期性抽样,然后送给判决器进行判决输出。对于这种解调方式,其误比特率近似值为:4) 2ASK信号的功率谱和带宽由于二进制振幅键控信号是随机的、功率型的信号,故研究频谱特性时,应该讨论它的功率谱密度。设s(t)是单极性随机矩形脉冲序列,且0、1出现是等概的,则2ASK信号的功率谱密度为:

第162页:2ASK调制与解调·仿真思路

3.仿真思路利用MATLAB仿真产生序列值为“0”、“1”的单极性不归零的基带脉冲序列,然后对此输入信号进行2ASK调制,生成适合信道传输的调制波形,最后对调制波形进行解调恢复原始信号,仿真得出相应波形。4.程序代码1)主程序clear allglobal dt t f df N T%全局变量close allN=2^20;dt=0.001;%ms

第163页:2ASK调制与解调·程序代码

df=1/(N*dt);%kHzT=N*dt;%截短时间Bs=N*df/2;%系统带宽t=linspace(-T/2,T/2,N);%时域横坐标f=linspace(-Bs,Bs,N)+eps;%频域横坐标fm=1;%模拟基带信号频率为1kHzfc=2;%正弦载波信号频率为2kHzmt=cos(2*pi*fm*t);%模拟基带信号m(mt>0)=1;%发送比特m(mt<0)=0;c=cos(2*pi*fc*t);%正统载波信号s=m.*c;%DSB-SC AM已调信号S=T2F(t,s);基带信号n=awgn(s,20);%AWGN信号噪声r=s+n;%接收信号

第164页:2ASK调制与解调·程序代码

y=r.*c;Lpfil=LPF(fc);%低通滤波器Y=T2F(y);yrt=real(F2T(Lpfil.*Y));yr=yrt-mean(yrt);yr(yr>0)=1;%发送比特yr(yr<0)=0;subplot(3,1,1)plot(t,m,’LineWidth’,1.2)title('输入信号');axis([-1,+1,-0.2,1.2*max(m)])xlabel('t (ms)')ylabel('s(t) (V)')subplot(3,1,2)plot(t,s,'LineWidth',1.2)

第165页:2ASK调制与解调·程序代码

title('2ASK调制后波形');axis([-1,+1,1.2*min©,1.2*max©])xlabel('t (ms)') ylabel('s(t) (v)')subplot(3,1,3) plot(t,yr,'LineWidth',1.2)axis([-1,+1,-0.2,1.2*max(yr)])title(['2ASK解调后波形'])xlabel('t (ms)') ylabel('s(t) (V)')subplot(2,1,1);[M,d_NRZf]=T2F(m,d_NRZ(1:length(m)));%信号频谱函数plot(M,10*log10(abs(d_NRZf).^2/Ts));axis([-2 2-50 20]);xlabel('输入信号功率谱密度(dB/Hz)');[f,s_2askf]=T2F(t,s); %信号频谱函数subplot(2,1,2); plot(f,10*log10(abs(s_2askf).^2/Ts));axis([-fc-4 fc+4-50 20]);xlabel('2ASK功率谱密度(dB/Hz)');

第166页:傅里叶变换函数程序代码

2)傅里叶变换函数T2Ffunction [f,sf]=T2F(t,st)dt=t(2)-t(1);T=t(end);df=1/T;N=length(st);f=-(N/2)*df:df:(N/2)*df-df;sf=fft(st);sf=T/N*fftshift(sf);3)子程序F2Tfunction x=F2T(X)globaldtdftfTNX=[X(N/2+1:N),X(1:N/2)];x=ifft(X)/dt;end

第167页:子程序程序代码

4)子程序LPFfunction y=LPF(fc);%实现低能的频域形式global dt df N t f TBs=N*df/2;%系统带宽x1=(Bs-fc/2)*N/(2*Bs);x2=(Bs+fc/2)*N/(2*Bs);y=zeros(1,N);y(x1:x2)=1;5.运行结果与分析由图3.40可以直观地看到将MATLAB产生的输入数字信号经过2ASK调制解调系统,可以无失真地恢复出原始信号。这是一种简单的数字调制解调系统,有利于实现基带数字信号与频带数字信号之间的相互变换。

第168页:2ASK调制与解调·运行结果图

图3.40 2ASK调制及解调后的信号2ASK信号的功率谱密度是由相应的单极性数字基带信号功率谱密度形状不变平移至±fc处形成的,所以2ASK信号的功率谱密度由连续谱和离

第169页:散谱两部分组成

散谱两部分组成。它的连续谱取决于数字基带信号基本脉冲的频谱;它的离散谱是位于±fc处的一对频域冲激函数,这意味着2ASK信号中存在着可作载频同步的载波频率fc的成分,如图3.41、图3.42所示。2ASK信号的带宽是单极性数字基带信号带宽的两倍。当数字基带信号的基本脉冲是矩形不归零脉冲时,fs=1/Ts。6.思考题

  • (1)2ASK的频谱组成如何?信号带宽如何?
  • (2)T2F函数有何作用?是如何实现的?

第170页:2ASK调制与解调·运行结果图

图3.41图3.42

第171页:2FSK调制与解调·实验目的

1.实验目的

  • (1)掌握二进制频移键控的原理。
  • (2)运用MATLAB对2FSK的调制与解调过程进行仿真,记录并分析仿真结果。2.实验原理2FSK信号在形式上如同两个不同频率交替发送的ASK信号相叠加,已调信号的时域表达式为:2FSK调制就是使用两个不同频率的载波信号来传输一个二进制信息序列。二进制“1”用来对应于载频f1,而“0”用来对应于载频f2的已

第172页:已调波形,而这个可以用受矩形脉冲序列控制

已调波形,而这个可以用受矩形脉冲序列控制的开关电路对两个不同的独立的频率源f1、f2进行选通,原理如图3.43所示。2FSK信号的解调也有非相干和相干两种。FSK信号可以看成是用两个频率源交替输出得到的,所以FSK接收机由两个并联的ASK接收机组成。原理如图3.44所示。图3.432FSK调制原理图

第173页:2FSK信号的解调3.仿真思路运用MAT

图3.44 2FSK信号的解调3.仿真思路运用MATLAB编程实现FSK调制解调过程,并且输出其调制后的波形,画出频谱、功率谱密度图,并比较各种调制的误码率情况,讨论其调制效果。

第174页:中所示的键控法

二进制频移键控已调信号的时域表达式为:二进制频移键控的调制器可以采用模拟信号调频电路来实现,但更容易的实现方法是图3.46中所示的键控法,两个独立的载波发生器的输出受控于输入的二进制信号,按照输入1或0分别选择一个载波作为输出。图3.46 2FSK信号调制器

第175页:2FSK调制与解调·程序代码

4.程序代码Fc=10;%载频Fs=40;%系统采样频率Fd=1;%码速率N=Fs/Fd;df=10;numSymb=25;%进行仿真的信息代码个数M=2;%进制数SNRpBit=60;%信噪比SNR=SNRpBit/log2(M);seed=[12345 54321];numPlot=15;x=randsrc(numSymb,1,[0:M-1]);%产生25个二进制随机码

第176页:2FSK调制与解调·程序代码

figure(1)stem([0:numPlot-1],x(1:numPlot),'bx');title('二进制随机序列')xlabel('Time');ylabel('Amplitude');%调制y=dmod(x,Fc,Fd,Fs,'fsk',M,df);numModPlot=numPlot*Fs;t=[0:numModPlot-1]./Fs;figure(2)plot(t,y(1:length(t)),'b-');axis([min(t) max(t)-1.5 1.5]);title('调制后的信号')xlabel('Time');ylabel('Amplitude');

第177页:2FSK调制与解调·程序代码

%在已调信号中加入高斯白噪声randn('state',seed(2));y=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'db');figure(3)plot(t,y(1:length(t)),'b-');axis([min(t) max(t)-1.5 1.5]);title('加入高斯白噪声后的已调信号')xlabel('Time'); ylabel('Amplitude');%相干解调figure(4)z1=ddemod(y,Fc,Fd,Fs,'fsk/eye',M,df);title('相干解调后的信号的眼图')figure(5)stem([0:numPlot-1],x(1:numPlot),'bx');hold on;

第178页:2FSK调制与解调·程序代码

stem([0:numPlot-1],z1(1:numPlot),'ro'); hold off;axis([0 numPlot-0.5 1.5]);title('相干解调后的信号原序列比较')legend('原输入二进制随机序列','相干解调后的信号')xlabel('Time'); ylabel('Amplitude');%非相干解调figure(6)z2=ddemod(y,Fc,Fd,Fs,'fsk/eye/noncoh',M,df);title('非相干解调后的信号的眼图')figure(7)stem([0:numPlot-1],x(1:numPlot),'bx'); hold on;stem([0:numPlot-1],z2(1:numPlot),'ro'); hold off;axis([0 numPlot-0.5 1.5]);title('非相干解调后的信号')legend('原输入二进制随机序列','非相干解调后的信号')xlabel('Time'); ylabel('Amplitude');

第179页:2FSK调制与解调·程序代码

%误码率统计[errorSym ratioSym]=symerr(x,z1);figure(8)simbasebandex([0:1:5]);title('相干解调后误码率统计')[errorSym ratioSym]=symerr(x,z2);figure(9)simbasebandex([0:1:5]);title('非相干解调后误码率统计')%滤除高斯白噪声Delay=3;R=0.5;PropD=0;[yf,tf]=rcosine(Fd,Fs,'fir',R,Delay);[yo2,to2]=rcosflt(y,Fd,Fs,'filter',yf);%加入高斯白噪声后的已调信号和经过升余弦滤波器后的已调信号

第180页:2FSK调制与解调·程序代码

t=[0:numModPlot-1]./Fs;figure(10)plot(t,y(1:length(t)),'r-');hold on;plot(to2,yo2,'b-');%滤除带外噪声hold off;axis([0 30-1.5 1.5]);xlabel('Time');ylabel('Amplitude');legend('加入高斯白噪声后的已调信号','经过升余弦滤波器后的已调信号')title('升余弦滤波前后波形比较')eyediagram(yo2,N);title('加入高斯白噪声后的已调信号的眼图')

第181页:2FSK调制与解调·运行结果与分析

5.运行结果与分析上述程序的运行结果如图3.47、图3.48、图3.49、图3.50、图3.51、图3.52、图3.53、图3.54、图3.55和图3.56所示。6.思考题

  • (1)加入高斯白噪声后的已调信号的眼图有什么特点?说明什么问题?
  • (2)相干解调与非相干解调的眼图相比较有什么特点?说明什么问题?

第182页:2FSK调制与解调·运行结果图

图3.47图3.48图3.47是二进原始信号图3.48是2FSK调制后的信号

第183页:2FSK调制与解调·运行结果图

图3.49图3.50图3.49是相干解调后信号的眼图图3.50是相干解调后的信号

第184页:2FSK调制与解调·运行结果图

图3.51图3.52图3.51是非相干解调后的信号的眼图图3.52是非相干解调后的信号

第185页:2FSK调制与解调·运行结果图

图3.53图3.54图3.53是相干解调后的误码率统计图3.54是升余弦滤波后的波形比较

第186页:加入高斯白噪声后的已调信号是加入高斯白

图3.55图3.56图3.55是加入高斯白噪声后的已调信号图3.56是加入高斯白噪声后的已调信号的眼图

第187页:2PSK调制与解调·实验目的

1.实验目的

  • (1)学习相位调制的基本原理。
  • (2)加强对MATLAB的进一步掌握。2.实验原理如同调频一样,若对载波的相位进行调制,将信号的信息加在载波的相位上则形成调相信号,调相的表达式为:式中:PMK为相移指数,这种调制方式,载波的幅度和角频率不变,而瞬时相位偏移是调制信号f(t)的线性函数,称为相位调制。当调制信号为单频时,调相波的表达式

第188页:2PSK调制与解调(续)

可写为
式中:βPM=KPMAm,称为调相指数。调相与调频有着密切的关系:所以在调相时可以先将调制信号进行微分后再频率调制,这样等效于调相,此方法称为间接调相;在调频时也可以先将调制信号进行积分后再进行调相,此方法称为间接调频。实际中直接调相和间接调频受调节范围的影响仅用于窄带调制情况,直接调频和间接调相常用于宽带调制。

第189页:2PSK调制与解调(续)

绝对相移是利用载波的相位(指初相)直接表示数字信号的相移方式。二进制相移键控中,通常用相位0和π来分别表示“0”或“1”。2PSK已调信号的时域表达式为:这里,S(t)与2ASK及2FSK时不同,为双极性数字基带信号,即:式中:g(t)是高度为1,宽度为Tb的门函数。因此,在某一个码元持续时间Tb内观察时,有2PSK信号的调制方框图如图3.58所示。图(a)是产生2PSK信号的模拟调制法框图;图(b)是产生2PSK信号的键控法框图。

第190页:2PSK调制与解调·运行结果图

图3.58 2PSK调制器框图就模拟调制法而言,与产生2ASK信号的方法比较,只是对S(t)的要求不同,因此2PSK信号可以看成是双极性基带信号作用下的DSB调幅信号。而就键控法来说,用数字基带信号S(t)控制开关电路,选择不同相位的载波输出,这时S(t)为单极性NRZ或双极性NRZ脉冲序列信号均可。2PSK信号属于DSB信号,它的解调不再能采用

第191页:包络检测的方法

包络检测的方法,只能进行相干解调,其方框图如图3.59所示。图3.59 2PSK信号接收系统方框图工作原理简要分析如下。不考虑噪声时,带通滤波器输出可表示为:y(t)=cos(ωct+ϕn)。式中:ϕn为2PSK信号某一码元的初相。ϕn=0时,代表数字“0”;ϕn=π时,代表数字“1”。与同步载波cosωct相乘后,输出为:

第192页:经低通滤波器滤除高频分量

经低通滤波器滤除高频分量,得解调器输出为:根据发端产生2PSK信号时ϕn(0或π)代表数字信息(“1”或“0”)的规定,以及收端x(t)与ϕn的关系的特性,抽样判决器的判决准则为:其中x为x(t)在抽样时刻的值。由于2PSK信号实际上是以一个固定初相的末调载波为参考的,因此,解调时必须有与此同频同相的同步载波。如果同步载波的相位发生变化,

第193页:相位变为π相位或π相位变为0相位

如0相位变为π相位或π相位变为0相位,则恢复的数字信息就会发生“0”变“1”或“1”变“0”的现象,从而造成错误的恢复。这种因为本地参考载波倒相,而在接收端发生错误恢复的现象称为“倒π”现象或“反向工作”现象。绝对移相的主要缺点是容易产生相位模糊,造成反向工作。这也是它实际应用较少的主要原因。解决该问题的方法是采用相对移相调制。3.仿真思路如果信号为:

第194页:现用调相将其调制到载波程序代码

现用调相将其调制到载波f(t)=fc(t)上,下面通过画出调相信号的时域波形频域波形来介绍调相波(t0=0.25s,fc=50Hz)。4.程序代码echo ont0=0.25;%信号持续时间tz=0.0005;%抽样周期fc=200;%载波频率kf=50;fz=1/tz;t=[0:tz:t0];%时间序列df=0.25;m=zeros(1,501);

第195页:2PSK调制与解调·程序代码

fori=1:1:125%前125个点值为对应标号m(i)=i;endfori=126:1:375m(i)=m(125)-i+125;%中间250个点值成下降趋势,线性方程如语句中endfori=376:1:501%最后125个点值用另一条直线方程m(i)=m(375)+i-375;endm=m/50;%将信号值幅度变至要求[M,m,df1]=fftseq(m,tz,df);%傅里叶变换M=M/fz;f=[0:df1:df1*(length(m)-1)]-fz/2;

第196页:2PSK调制与解调·程序代码

fori=1:length(t)%便于进行相位调制和作图mn(i)=m(i);endu=cos(2*pi*fc*t+mn);%相位调制[U,u,df1]=fftseq(u,tz,df);%傅里叶变换U=U/fz;%频率压缩pause;subplot(2,1,1)plot(t,m(1:length(t)))axis([0 0.25-3 3]);xlabel('时间')title('信号波形');subplot(2,1,2)plot(t,u(1:length(t)))axis([0 0.15-2.1 2.1]);xlabel('时间')title('调相信号的时域波形');pausesubplot(2,1,1)plot(f,abs(fftshift(M)))xlabel('频率');title('信号频谱')subplot(2,1,2)plot(f,abs(fftshift(U)))title('调相信号的频谱');xlabel('频率')

第197页:2PSK调制与解调·运行结果与分析

5.运行结果与分析时域波形如图3.60所示,从图中可以看出由于信号的波形是渐变的,已调信号的波形不是太明显,而若用突变的波形来调制就会得到变化明显的已调波形。调相信号的频谱如图3.61所示。在这里调相的频谱变化类似于调幅,这是因为调相是窄带调相,其频谱类似于调幅的频谱。6.思考题

  • (1)2PSK信号的频谱有什么特点?是线性调制还是非线性调制?
  • (2)用MATLAB实现2PSK信号的解调。

第198页:2PSK调制与解调·运行结果图

图3.60三角波调相波形图3.61三角波调相的频谱图

第199页:MQASK与MASK调制·实验目的

1.实验目的

  • (1)掌握MQASK和MASK调制以及解调的原理。
  • (2)掌握用MATLAB对MQASK和MASK调制解调进行仿真的方法。2.实验原理所谓多进制数字调制,就是利用多进制数字基带信号去调制高频载波的某个参量,如幅度、频率或相位的过程。多进制数字幅度调制(MASK)又称为多电平调制。M进制幅度调制信号的载波振幅有M种取值,在一个码元期间Tb内,发送其中的一种幅度的

第200页:载波信号

载波信号。MASK已调信号的表示式为:式中,s(t)为M进制数字基带信号。实现M电平调制的原理框图如图3.62所示,与2ASK系统非常相似,不同的只是基带信号由二电平变为多电平。为此,发送端增加了2−M电平变换器,将二进制信息序列每k个分为一组(k=log2M),变换为M电平基带信号,再送入调制器。相应地,在接收端增加了M−2电平变换器。多进制数字幅度调制信号的解调可以采用相干解调方式,也可以采用包络检波方式,原理与2ASK的相同。由于采用多电平,因而要求调制器为线性调制器,即已调信号幅度应与输入基带信号幅度成正比。

第201页:M进制幅度调制系统原理框.仿真思路数字调

图3.62M进制幅度调制系统原理框图3.仿真思路数字调制包括数模转换和模拟调制两部分,如图3.63所示。数模转换技术将接收到的数字信号转化为模拟信号,再完成调制。一般来说,数字信号可以组成一个有限的码符集,在通信工具箱中,映射点的个数被称为M元数。数模转换算法需为每个映射点找到不同的模拟信号集,由模拟信号集组成信号空间,映射点对应的所有模拟信号集被称为点

第202页:MQASK与MASK调制与解调(续)

集。数字解调过程是数字调制的逆过程,包括模拟解调和模数转换。模拟信号解调后再数字化就得到解调的数字信号。数字调制涉及3个频率,即载波信号频率Fc、抽样频率Fs和波特率Fd。为能正确解调,频率之间应满足Fs>Fc>Fd。1) MASKM元幅度键控调制包含MASK映射和模拟幅度调制两部分。MASK映射将输入的数字码符映射到区间[−x,x],数字码符取值范围是[0,M−1]区间内的整数。输出信号的幅值分别为[−x,x]的(M−1)等分点。注意:M必须是2k,k是一个正整数,图3.64所示为M元数为2、4和8的点集。

第203页:MQASK与MASK调制·运行结果图

图3.63数字调制过程图3.64 2、4和8点集MASK映射

第204页:MQASK与MASK调制与解调(续)

2) MQASKMQASK是数字调制使用得最多的一种方法。它一般将输入的数字码符映射成为同相和正交的两个独立分量,然后用模拟QAM法对它们进行调制;在接收方,接收的信号被解调为同相和正交信号,从它们映射过程中恢复原始信号。有许多种方法可将输入信号映射成同相和正交分量。通信工具箱为MQASK提供3种方案,即平面直角点集、圆点集和用户定义任意点集。在本程序中使用平面直角点集。平面直角点集QASK具有规则的方形点集结构,平面直角点集的关键数字是元数M,通信工具箱限制平面直角点集为2k,k是一个正整数。

第205页:MQASK与MASK调制与解调(续)

3)数字带通调制/解调函数dmod和ddemod格式一:y=dmod(x,Fc,Fd,Fs,'ask',M)。功能:输出M-ASK调制信号,M-ASK的元数由参数M指定,输入数字信号范围为[0,M−1]的整数,输出信号y的大小是输入信号x大小的Fs/Fd倍。使用modmap('ask',M)命令可画出平面星座图。格式二:y=dmod(x, Fc, Fd, Fs,'qdsk',M)。功能:输出以平面直角点集表示的QASK调制信号,QASK的元数为参数M,输入数字信号的范围为[0,M−1],输出信号y的大小是输入信号x大小的Fs/Fd倍。使用modmap('qask',M)命令可画出平面星座图。

第206页:格式三程序代码

格式三:z=ddemod(y,Fc,Fd,Fs,'ask',M)。功能:解调M-ASK调制信号,输出数字信号为[0,M−1]范围的整数。格式四:z= ddemod(y,Fc,Fd,Fs,'qask',M)。功能:解调M-QASK调制信号,输出数字信号为[0,M−1]范围的整数。4.程序代码M=16;%设置M的数目Fc=4;%载波频率Fd=1;%信号采样速率Fs=16;%采样速率%正交MASK调制解调x1=randint(50,1,M);%产生随机信号y1=dmod(x1,Fc,Fd,Fs,'qask',M);%使用M元QASK调制方式

第207页:MQASK与MASK调制·程序代码

y1noisy=awgn(y1,10, 'measured');%向信号y1添加高斯白噪声z1=ddemod(y1noisy,Fc,Fd,Fs, 'qask',M);%解调信号y1noisy%非正交MASK调制解调y2=dmod(x1,Fc,Fd,Fs, 'ask',M);%使用M元ASK调制方式y2noisy=awgn(y2,10, 'measured');%向信号y2添加高斯白噪声z2=ddemod(y2noisy,Fc,Fd,Fs, 'ask',M);%解调信号y2noisy%绘图t=0.1:0.1:5;subplot(3,1,1);%绘制原信号的图plot(t,x1);title('未调制信号');subplot(3,1,2);%绘制正交调制后的信号图plot(y1noisy);title('正交调制后的信号');

第208页:MQASK与MASK调制·程序代码

subplot(3,1,3);%绘制非正交调制后的信号图plot(y2noisy);title('非正交调制后的信号');figuresubplot(2,1,1);plot(t,x1);title('未调制信号');subplot(2,1,2);%绘制解调后的信号图plot(t,z1, 'r*-',t,z2, 'go-');title('调制解调后的信号比较');legend('正交调制解调后信号', '非正交调制解调后信号');figuremodmap('qask',M);%绘制16Q-ASK星座图figuremodmap('ask',M) ;%绘制16ASK星座图

第209页:MQASK与MASK调制·运行结果与分析

5.运行结果与分析从图3.65的仿真结果可以看出,正交调制后的信号比非正交调制后的信号受信道中高斯白噪声的影响要小,衰减也小,因此,16QASK信号的抗噪声能力优于16ASK,常被用于在频带受限的信道中传输信息。从图3.66的仿真结果可以看出,与经非正交调制解调后的信号相比,经正交调制解调后的信号更逼近原始信号,因此,16QASK调制解调的性能要优于16ASK调制解调的性能。

第210页:MQASK与MASK调制与解调(续)

从图3.67和图3.68的仿真结果可以看出,16QASK信号的星座图为矩形,I(t)和Q(t)为双极性四电平信号,相邻电平的距离相等;16ASK信号的星座图为直线型,相邻电平的距离不相等。6.思考题

  • (1)MASK与MQASK调制有什么区别?哪个抗噪声性能更好?
  • (2)ddemod函数有什么用途?

第211页:调制前、后的信号

图3.65调制前、后的信号

第212页:调制/解调前

图3.66调制/解调前、后的信号

第213页:MQASK与MASK调制·运行结果图

图3.67 16QASK星座图图3.68 16ASK星座图

第214页:OFDM调制与解调·实验目的

1.实验目的

  • (1)了解OFDM系统的基本原理。
  • (2)掌握OFDM调制解调的基本原理以及OFDM系统中的保护间隔、循环前缀和子载波数的选择。
  • (3)采用MATLAB仿真软件对OFDM系统进行较为完整的仿真,在高斯白噪声信道情况下完成OFDM调制解调工作。2.实验原理1) OFDM系统的调制与解调原理正交频分复用是在频分复用(FDM)的原理基础上,子载波集采用两两正交的正弦或余弦函数集,

第215页:OFDM调制与解调(续)

满足下式
假设在一个周期[0,T]内传输的N个符号为d(0),d(1),d(2),…,d(N-1),d(n)为复数,d(n)=a(n)+jb(n),此复数序列经过串并变换器后调制N个子载波,进行频分复用。一个OFDM符号s(t)包括多个经过调制的子载波的合成信号,其中每个子载波都受到相移键控(PSK)或者正交幅度调制(QAM)符号的调制。由图3.69知:上式中,fc为系统的发射载频,Δf为子载波间的最小间隔,T为OFDM符号周期,Ts为经过数据编码器的符号周期。

第216页:OFDM调制与解调(续)

在接收端,输入信号分成N个支路,分别用N个子载波混频和积分,恢复出N个子信号,再经过并串变换和常规QAM(或QPSK)解调就可以恢复出数据。由于子载波的正交性,混频和积分电路可以有效地分离各个子信道。2) OFDM系统中的FFT/IFFT对图3.69中的输出s(t)在T=mTs内进行离散化得到:

第217页:OFDM调制与解调(续)

将这些分量在Δt时间内进行低通滤波,即进行D/A变换,则又可以恢复为原来的模拟信号s(t)。将fn=fc+nΔf带入上式得到:而大括号内正是序列d(n)=a(n)+jb(n)的离散傅里叶反变换IDFT。可见,图3.69的框内部分可用IDFT来实现,取IDFT输出的实部,再经D/A变换和重建(平滑)滤波又可恢复成原来的模拟信号s(t),经上变频即可送入信道进行传输。由于只传IDFT输出的实部,在接收端(下变频之后)则须以Δt/2时间间隔进行采样,并进行ZN点DFT才能恢复出原来的数据。同理,在接收端如图3.70所示,框内

第218页:部分也可以用DFT模块来代替

部分也可以用DFT模块来代替。图3.69 OFDM系统发送端的调制部分

第219页:OFDM系统接收端的解调部分3.仿真思路

图3.70 OFDM系统接收端的解调部分3.仿真思路根据TS36.211协议具体系统的描述,此OFDM

第220页:系统采用的结构

系统采用如图3.71所示的结构。可分为信号源、调制、串并转换、IFFT模块、并串转换、加入CP、去掉CP、FFT模块、解调等。用MATLAB来仿真OFDM系统,主要目的就是完成系统框图中的各单元的功能,最后进行结果分图3.71 OFDM系统的仿真框图

第221页:OFDM调制与解调·运行结果图

图3.72用matlab实现OFDM系统的流程图

第222页:析,确定仿真后的系统性能如何

析,确定仿真后的系统性能如何。根据系统仿真结构图,可以画出程序实现流程图,图3.72是用MATLAB程序实现OFDM系统的流程图。根据文中建立的OFDM系统的数学模型,主程序主要分以下几个部分:产生信源数据、产生OFDM信号、OFDM信号通过噪声信道、接收端的OFDM信号的恢复、系统性能的评价。4.程序代码1)主程序%定义部分初始变量para=128;并行信道的个数fftlen=128; FFT变换的长度noc=128;仿真过程中所使用的载波数

第223页:OFDM调制与解调·程序代码

nd=6;每一次循环中OFDM码字的个数ml=2;使用QPSK调制方式sr=250000;符号速率br=sr.*ml;比特速率gilen=32;保护间隔的长度%产生信源数据seldata=rand(1,para*nd*ml)>0.5;paradata=reshape(seldata,para,nd*ml);%产生OFDM信号%QPSK modulation[ich,qch]=qpskmod(paradata,para,nd,ml);kmod=1/sqrt(2);ich1=ich.*kmod;qch1=qch.*kmod;

第224页:OFDM调制与解调·程序代码

%IFFTx=ich1+qch1.*i;y=ifft(x);ich2=real(y);qch2=imag(y);%OFDM信号通过噪声信道[ich4,qch4]=comb(ich3,qch3,attn);[ich5,qch5]= girem(ich4,qch4,fftlen2,gilen,nd);%接收端的OFDM信号的恢复%FFTrx=ich5+qch5.*i;ry=fft(rx); % fft : built in functionich6=real(ry); % real : built in functionqch6=imag(ry); % imag : built in function

第225页:OFDM调制与解调·程序代码

%QPSK demodulationich7=ich6./kmod;qch7=qch6./kmod;[demodata]=qpskdemod(ich7,qch7,para,nd,ml);% Parallel to serial conversiondemodata1=reshape(demodata,1,para*nd*ml);%计算误码率%计算误码率noe2=sum(abs(demodata1-seldata));nod2=length(seldata);%计算平均误码率noe=noe+noe2;nod=nod+nod2;%计算误字率

第226页:OFDM调制与解调·程序代码

ifnoe2~=0eop=eop+1;elseeop=eop;endeop;nop=nop+1;end%计算误码率per=eop/nop;ber=noe/nod;2) QPSK调制仿真子程序function [demodata]=qpskdemod(idata,qdata,para,nd,ml)demodata=zeros(para,ml*nd);

第227页:OFDM调制与解调·程序代码

demodata((1:para),(1:ml:ml*nd-1))=idata((1:para),(1:nd))>=0;demodata((1:para),(2:ml:ml*nd))=qdata((1:para),(1:nd))>=0;3)产生加性高斯白噪声的仿真子程序function [iout,qout] = comb (idata,qdata,attn)iout = randn(1,length(idata)).*attn;qout = randn(1,length(qdata)).*attn;iout = iout+idata(1:length(idata));qout = qout+qdata(1:length(qdata));4)插入CP的仿真子程序function [iout,qout]= giins(idata,qdata,fftlen,gilen,nd);idata1=reshape(idata,fftlen,nd);qdata1=reshape(qdata,fftlen,nd);idata2=[idata1(fftlen-gilen+1:fftlen,:); idata1];qdata2=[qdata1(fftlen-gilen+1:fftlen,:); qdata1];

第228页:OFDM调制与解调·程序代码

iout=reshape(idata2,1,(fftlen+gilen)*nd);qout=reshape(qdata2,1,(fftlen+gilen)*nd);5)去掉CP的仿真子程序function [iout,qout]= girem(idata,qdata,fftlen2,gilen,nd);idata2=reshape(idata,fftlen2,nd);qdata2=reshape(qdata,fftlen2,nd);iout=idata2(gilen+1:fftlen2,:);qout=qdata2(gilen+1:fftlen2,:);6)QPSK解调的仿真子程序function [demodata]=qpskdemod(idata,qdata,para,nd,ml)demodata=zeros(para,ml*nd);demodata((1:para),(1:ml:ml*nd-1))=idata((1:para),(1:nd))>=0;demodata((1:para),(2:ml:ml*nd))=qdata((1:para),(1:nd))>=0;

第229页:OFDM调制与解调·运行结果与分析

5.运行结果与分析图3.73为OFDM子载波采用QPSK调制方式的I-channel信号,图3.74为OFDM子载波采用QPSK调制方式的Q-channel信号。从图中验证了调制的正确性,由于QPSK是在M=4时的调相技术,它规定了4种载波相位,分别为45°、135°、225°、315°。由图3.75可以看出,随着信噪比的增加,误码率接近于零。6.思考题OFDM子载波采用QPSK调制方式的I-channel信号与OFDM子载波采用QPSK调制方式的Q-channel信号有什么不同?是如何相互作用的?

第230页:OFDM子载波采用QPSK调制方式的同相

图3.73OFDM子载波采用QPSK调制方式的同相、正交信道信号

第231页:OFDM子载波采用QPSK调制方式的解调

图3.74OFDM子载波采用QPSK调制方式的解调相位

第232页:OFDM子载波采用QPSK调制方式的仿真

图3.75OFDM子载波采用QPSK调制方式的仿真误码率

第233页:数字基带系统的抗噪声性能分·实验目的

1.实验目的

  • (1)了解基带系统抗噪声性能分析的方法。
  • (2)学习基带系统抗噪声性能分析仿真的方法。2.实验原理数字基带系统是指无调制解调器的数字传输系统,数字基带传输系统的框图如下图所示。

第234页:数字基带系统的抗噪声性能分析(续)

在基带传输中一个很重要的问题是码间串扰及误码率的计算,基带传输系统的总误码率为:若已知这两个条件就可以直接计算出该系统的误码率。但通常噪声的方差是不容易知道的。为了计算误码率就需要根据系统的框图按照误码率的原始定义Pe=传输的错误码元数/总码元数。

第235页:数字基带系统的抗噪声性能分析(续)

为此,需要计算错误的码元个数,在接收端采用匹配滤波或相关接收时可以对错误码元进行计数。回顾一下最佳接收理论中的极大似然比法则,则:在判决时加入一个计数器使得问题有望解决。本例根据以上理论分析采用一个理想化的模型对基带系统的误码率进行仿真。

第236页:数字基带系统的抗噪声性能分·仿真思路

3.仿真思路将数字基带传输系统中码型变换部分抽去,将基带系统的框图建模如下图所示。其中,信道信号采用均匀随机数,两个高斯随机数发生器给信道引入了加性噪声,将接收滤波器与抽样判决合并成检测器,然后通过对比输入信源记下差错的个数,最后计算误码率。用Monte Carlo仿真估计Pe,并且画出Pe与SNR的对比图。先仿真产生随机变量r0和r1,它们构成了检测器的输入。首先产生一个等概率出现并且互为统计独立的二进制0和1的序列。

第237页:数字基带系统的抗噪声性能分(续)

为了实现这一点,使用一个产生范围在(0,1)内的均匀随机数发生器,如果产生的随机数在(0,0.5)以内,二进制源的输出就是0,否则就是1。利用两个高斯噪声发生器产生加性噪声分量n0和n1,它们的均值是0,方差是(E为信号能量)。为了方便,可以将信号能量归一化到1而改变方差。

第238页:数字基带系统的抗噪声性能分·程序代码

4.程序代码1)主程序SNRindB1=0:1:12;SNRindB2=0:0.1:12;for i=1:length(SNRindB1),%根据仿真模型计算误码率smld_err_prb(i)=smldPe(SNRindB1(i));end;%根据理论公式计算误码率for i=1:length(SNRindB2),SNR=exp(SNRindB2(i)*log(10)/10);theo_err_prb(i)=Qfunct(sqrt(SNR));end;

第239页:数字基带系统的抗噪声性能分·程序代码

semilogy(SNRindB1,smld_err_prb,'*');%绘制仿真模型的误码率holdsemilogy(SNRindB2,theo_err_prb);%绘制根据理论计算的误码率legend(‘仿真值’,‘理论值’);xlabel('SNR');ylabel('Pe');2)仿真模型的误码率计算函数function [p]=smldPe(snr_in_dB)E=1;%能量归一化SNR=exp(snr_in_dB*log(10)/10);%将dB值转换为实际比值sgma=E/sqrt(2*SNR);%噪声方差N=10000;%产生二进制信源

第240页:数字基带系统的抗噪声性能分·程序代码

for i=1:N,temp=rand;%生成(0,1)间均匀分布的10000个值if (temp<0.5),dsource(i)=0;%小于0.5的值取为0elsedsource(i)=1;%大于0.5的值取为1endend;%检测器及误码率计算numoferr=0;%将错误计数器置0for i=1:N,%匹配滤波输出的值,即监测器的输入值

第241页:数字基带系统的抗噪声性能分·程序代码

if (dsource(i)==0),r0=E+gngauss(sgma);r1=gngauss(sgma);%信源为0的情况elser0=gngauss(sgma);r1=E+gngauss(sgma);%信源为1的情况end;if (r0>r1),decis=0;%上支路输出大于下支路输出判决为0elsedecis=1;%下支路输出大于上支路输出判决为0end;if (decis~=dsource(i)),numoferr=numoferr+1;

第242页:数字基带系统的抗噪声性能分·程序代码

end;end;p=numoferr/N;%误码率计算3)高斯随机噪声函数function [gsrv1,gsrv2]=gngauss(m,sgma)if nargin == 0,m=0; sgma=1;%如果输入变量缺失,则均值为0,方差为1elseif nargin == 1,sgma=m; m=0;%如果输入变量只有一个,则均值为0,方差为输入值end;u=rand;z=sgma*(sqrt(2*log(1/(1-u))));%Rayleigh分布的计算u=rand ;

第243页:数字基带系统的抗噪声性能分·程序代码

gsrv1=m+z*cos(2*pi*u);gsrv2=m+z*sin(2*pi*u);4) Q函数function [y]=Qfunct(x)y=(1/2)*erfc(x/sqrt(2));5.运行结果与分析右图为仿真得到的曲线:图3.78

第244页:数字基带系统的抗噪声性能分·运行结果图

图3.78给出了在不同的信噪比SNR下,传输N=10000个比特时的仿真结果。可以看到仿真结果与理论值之间的一致性。注意到图中N=10000个数据比特的仿真能够可靠地估计出差错概率在Pe=0.001以下;换句话说,用N=10000个数据比特,在对Pe的可靠估计下应该至少有10个差错。此外,注意到仿真值和理论值在低信噪比下完全一致,而在高信噪比下一致性稍差,这是由于引入的高斯噪声在高信噪比下远大于E,对于本题程序给出的“择大判决”法干扰增强,从而使判决错误增多。

第245页:数字基带系统的抗噪声性能分·思考题

6.思考题

  • (1)针对结果分析中提到的不足,应如何改进?
  • (2)本题中信道干扰是用高斯随机噪声代替的,这种方法是否合理?若不合理,应如何改进?本题的模型是否还可以改进?

第246页:线性分组码的编码与解码·实验目的

1.实验目的

  • (1)以(7,3)汉明码为例,说明线性分组码的编码方法。
  • (2)学习矩阵在MATLAB中的操作,并实现线性分组码的编码与解码。2.实验原理线性分组码中的分组是指编码方法是按信息分组来进行的,而线性则是指编码规律即监督位与信息位之间的关系遵从线性规律。线性分组码一般可以记为(n,k)码,即将k位信息码,编成n位码元长度的分组,而(n−k)位为监督码元长度。

第247页:线性分组码的编码与解码(续)

下面以简单的(7,3)汉明码为例进行说明。以每3位信息比特作为一组进行编码,即输入编码器的信息位长度k=3,完成编码后的输出编码器的长度为n=7,显然监督位长度为(n−k)=4位,编码效率为η=k/n=3/7。1)编码方程设输入的信息码元位为:U=(U0,U1,U2) (3-76)输出的码组为:C=(C0,C1,C2,C3,C4,C5,C6) (3-77)输出码组中信息位为:C0=U0,C1=U1,C2=U2 (3-78)

第248页:线性分组码的编码与解码(续)

监督位为
C3=U0⊕U2,C4=U0⊕U1⊕U2,C5=U0⊕U1,C6=U1⊕U2 (3-79)在输出的码组中,前3位即为信息位。其中监督位是前3位信息位的线性组合。将式(3-78)和式(3-79)写成矩阵形式为:(3-80)若G=(I∶Q),其中I为单位矩,则C为系统码,G为生成矩阵,I为单位矩阵的G称为典型形式的生成矩阵。可见,如已知信息码组U与生成矩G,即可生成码组。

第249页:线性分组码的编码与解码(续)

2)监督方程组若将式(3-80)中后4位监督方程组改写为:(3-81)将上述线性方程改为矩阵形式为:(3-82)

第250页:线性分组码的编码与解码(续)

它可以表示为
。称H为监督矩阵,H=(P∶I),其中I为单位矩阵,则C为系统码,I为单位矩阵的监督矩阵称为典型形式的监督矩阵。对于典型形式的监督矩阵H=(P∶I)和典型形式的生成矩阵G=(I∶Q),有P=QT。3)校正子方程若在接收端,接收信号为:y=(y0,y1,… ,yn-1)=X+n=C⊕e(3-83)式中:C=(C0,C1,…,Cn-1)为发送码组,e=(e0,e1,…,en-1)为传送中的误码。由可知,若传输中无差错,即e=0,则接收端必然要满足监督方程;若传输中有差错,即e≠ 0,

第251页:线性分组码的编码与解码(续)

则接收端监督方程改写为
由式(3-83)求得校正子S为:(3-85)称式(3-84)和式(3-85)为校正子方程,接收端利用它们来进行译码。其中S仅与e有关,而与C无关。由于H矩阵是(n−k)个独立的方程,然而传输的差错e则是一个n维矢量,有n个特定值,所以S不能唯一确定e。由某个给定的S,可以有2k个e的解,即同一个伴随式以得到2k个错误,而真正的错误图样应该是2k个中的其中一个,所以译码器必须从这2k个候选错误矢量中决定出一个真正的错误矢量。(3-84)

第252页:线性分组码的编码与解码·仿真思路

3.仿真思路

  • (1)构造生成矩阵及监督矩阵。
  • (2)编码。
  • (3)设定一位随机错误。
  • (4)接收信号。
  • (5)译码并寻找错误。
  • (6)纠错。
  • (7)对上述纠错后的码组进行截断处理,提取信息位比特。4.程序代码n=7;%码长k=3;%信息位

第253页:线性分组码的编码与解码·程序代码

Q=[1 1 1 1;0 1 1 1;1 1 0 1];G=[eye(k) Q];P=Q';H=[P eye(n-k)];msg=[1 1 1]%信息比特code=mod(msg*G,2)%进行编码%在信道传输中出现错误,任意取一个码字发生错误,在这里取第二位码字发生错误code(2)=~code(2);recd=code%接收信号syndrome=mod(recd*H',2);%接收端计算校正子%寻找错误位置find=0;for i=1:n

第254页:线性分组码的编码与解码·程序代码

if ~finderrvect=zeros(1,n);errvect(i)=1;search=mod(errvect*H',2);if search==syndromefind=1;index=i;%index指示错误码位置endendendcorrectedcode=recd;correctedcode(index)=mod(recd(index)+1,2)msg_decoded=correctedcode;%纠正错误msg_decoded=msg_decoded(1:3)%去除校验位

第255页:线性分组码的编码与解码·运行结果与分析

5.运行结果与分析:

第256页:线性分组码的编码与解码(续)

从仿真结果可以看到输入码组、编码后的码组、接收信号及纠错后的码组信息,并得到译码结果为msg_decoded=[1 1 1],与输入信息比特相同。因此在本例中,利用线性分组码就能得到正确的译码结果,同时可以初步看到(7,3)码能纠正一位随机错误。6.思考题

  • (1)线性分组码的检错、纠错能力与其最小码距有关。线性分组码的最小码距是所有码字中具有最小汉明重量的非零码字矢量的汉明重量。据此求上述(7,3)线性分组码的最小码距,并说明(7,3)码的检纠错能力。

第257页:汉明码是的线性分组码

(2)汉明码是的线性分组码,其最小距离为3,且有一个很简单的奇偶校验矩阵。奇偶校验矩阵是的矩阵,除去全0序列外,用长为m的全部序列作为它的列。例如,对于m=3,有一个(7,4)的码,它的奇偶校验矩阵用规则形式表示是:据此有:根据以上理论求(15,11)汉明码的全部码字,并验证它的最小距离等于3。

第258页:卷积码的编码·实验目的

1.实验目的

  • (1)了解卷积码的原理。
  • (2)学习卷积码在MATLAB中的实现方法。2.实验原理在分组码中,每k个信息比特的序列以某种固定的方式映射为一个n信道输入的序列,但是与前面的信息比特无关。在卷积码中,每k0个信息比特序列映射为一个长为n0的信道输入序列,但是这个信道输入序列不仅取决于当前的个信息比特,还与该编码器的前(L−1)k0个输入序列有关。

第259页:卷积码的编码(续)

因此,这种编码器是一种有限状态机的结构,在其中的每一个时刻,输出序列不但与输入序列关,而且与编码器的状态有关,这个状态是由编码器的前(L−1)k0个输入决定的。下图给出了k0=2,n0=3和L=4的一种卷积码的方框图。

第260页:通常,用卷积码的生成序列来定义卷积码,记

通常,用卷积码的生成序列来定义卷积码,记为g1,g2,…,gn。一旦给定了生成序列,卷积码就被唯一确定了。3.仿真思路当信息序列为1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1时,求上图所示的卷积编码器的输出。该信息序列的长度是17,它不是k0=2的倍数。因此,现在补一个额外的0就足够了,这样长度就为18。于是就有了下面的信息序列:1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0

第261页:卷积码的编码·程序代码

现在,因为有:可得n0=3和L=4,因此输出序列的长度是:(18/2+4−1)*3=36为了确保编码器从全0状态开始,并且回到全0状态,要求在输入序列的起始和末尾都添加(L−1)k0个0。因此,上述序列就变为:0 0 0 0 00 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0利用函数cnv_encd.m,求得输出序列为:0 0 0 0 0 11 0 1 1 1 1 1 0 1 0 1 1 1 0 0 1 1 0 1 0 0 1 0 0 1 1 1 11 1

第262页:卷积码的编码·程序代码

4.程序代码1)主程序k0=2;g=[0 0 1 0 1 0 0 1;0 0 0 0 0 0 0 1;1 0 0 0 0 0 0 1];input=[1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1];output=cnv_encd.m(g, k0,input);2)函数cnv_encd.mfunction output=cnv_encd(g,k0,input)% Check to see if extra zero-padding is necessary.if rem(length(input),k0) > 0input=[input,zeros(size(1:k0-rem(length(input),k0)))];endn=length(input)/k0;%判断g的大小

第263页:卷积码的编码·程序代码

if rem(size(g,2),k0) > 0error('Error, g is not of the right size.')end%确定l和n0l=size(g,2)/k0;n0=size(g,1);% add extra zerosu=[zeros(size(1:(l-1)*k0)),input,zeros(size(1:(l-1)*k0))];% Generate uu, a matrix whose columns are the contents of% conv. encoder at various clock cycles.u1=u(l*k0:-1:1);for i=1:n+l-2u1=[u1,u((i+l)*k0:-1:i*k0+1)];enduu=reshape(u1,l*k0,n+l-1);%确定输出output=reshape(rem(g*uu,2),1,n0*(l+n-1));

第264页:卷积码的编码·运行结果与分析

5.运行结果与分析0 0 0 0 0 1 1 0 1 1 1 1 1 0 1 0 1 11 0 0 1 1 0 1 0 0 1 0 0 1 1 1 1 1 16.思考题reshape函数有什么作用?

第265页:直接序列扩频系统·实验目的

1.实验目的

  • (1)了解扩频通信的理论基础、工作方式。
  • (2)学习直接序列扩频系统以及其实现。
  • (3)仿真直扩信号抑制正弦干扰的效果。2.实验原理扩频通信的理论基础是香农定理,即:信噪比(即接收机输入信噪比)。根据此定理,扩频通信系统虽然占有较大的信道带宽,但它可以用较低的信噪比来传输信息。扩频通信系统具有保密性好、抗干扰能力强等许多优点,它在很多领域得到了广泛应用。

第266页:下图为一个数字扩频通信系统的基本方框图

下图为一个数字扩频通信系统的基本方框图。其中信道编码器、信道解码器、调制器和解调器是传统数字通信系统的基本构成单元。在扩频通信系统中除了这些单元外,还应用了两个相同的伪随机序列发生器,分别作用在发送端的调制器和接收端的解调器上。这两个序列发生器产生伪随机噪声(PN)二值序列,在调制端将传送信号在频域进行扩展,在解调端解扩该扩频发送信号。

第267页:扩频通信有以下几类工作方式

扩频通信有以下几类工作方式
(1)直接序列扩频方式,简称直扩(DS)方式。DS系统用高速伪随机码将待传输的数字信息进行扩频调制。(2)跳变频率方式,简称跳频(FH)方式。FH系统用伪随机码控制发射机的载频,使之随伪随机码的变化而跳变,从而扩展发射信号的频率变化范围,即扩展传输带宽。(3)跳变时间方式,简称跳时(TH)方式。TH系统把一段时间(一帧)分成许多时间片,在哪个时间片内发射信号由扩频码序列控制。(4)混合方式。将以上3种基本扩频方式结合起来,构成混合式扩频系统。

第268页:目前最常用的是DS

目前最常用的是DS、FH及FH/DS系统。本例所做的仿真是关于DS系统在干扰条件下的误码率性能仿真,换句话说,即DS系统的抗干扰性能仿真。下图为DS系统的原理框图。

第269页:直接序列扩频系统·仿真思路

3.仿真思路
通过Monte Carlo仿真说明DS扩频信号在抑制正弦干扰方面的有效性,根据DS系统的原理框图,可以得到DS系统仿真模型图如下图所示。

第270页:直接序列扩频系统(续)

与基带传输系统的仿真类似,本题的仿真也是从实际的系统框图中抽象出一个仿真模型,然后进行Monte Carlo仿真。将仿真模型图与DS系统原理框图对比,可以发现仿真中抽去了调制解调部分,但并不影响所期望的对DS系统的抗干扰性能的仿真,反而使得仿真模型更加简化,仿真更加容易实现。仿真模型图中用一个均匀随机数发生器(RNG)产生某个二进制信息符号(±1)的序列。每个信息比特重复Lc次,相应于每个信息比特的PN码片数。所得的序列乘以由另一个均匀高RNG产生的PN序列c(n),这样信源序列成为了扩频序列。

第271页:直接序列扩频系统(续)

将方差为的高斯白噪声和形式为的正弦干扰加到这个扩频序列上。解扩器完成与PN序列的互相关,并在构成每信息比特的Lc个信号样本上求和。将相加器的输出再送到检测器判决是否出错,差错计数器对检测器的输出错误进行计数,最后完成误码率的计算。选取3组不同幅度的正弦干扰进行仿真并对比无正弦干扰的情况,选取Lc=20。还有一点需要注意的是,每次仿真中需对信号幅值进行加权以满足仿真所需的SNR。

第272页:直接序列扩频系统·程序代码

4.程序代码1)主程序:%参数设置,码片数、正弦干扰的幅度、正弦干扰的角频率Lc=20;A1=3;A2=6;A3=12;A4=0;w=1;%设置存在正弦干扰情况下的仿真的信噪比范围SNRindB=0:2:30;for i=1:length(SNRindB),%对3组不同幅值的正弦干扰计算误码率

第273页:直接序列扩频系统·程序代码

smld_err_prb1(i)=ds_smld(SNRindB(i),Lc,A1,w);smld_err_prb2(i)=ds_smld(SNRindB(i),Lc,A2,w);smld_err_prb3(i)=ds_smld(SNRindB(i),Lc,A3,w);end;%设置无正弦干扰情况下的仿真的信噪比范围SNRindB4=0:1:8;for i=1:length(SNRindB4),%计算无正弦干扰的误码率smld_err_prb4(i)=ds_smld(SNRindB4(i),Lc,A4,w1);end;%绘图指令semilogy(SNRindB,smld_err_prb1,'-*');hold onsemilogy(SNRindB,smld_err_prb2,'-*');semilogy(SNRindB,smld_err_prb3,'-*');

第274页:直接序列扩频系统·程序代码

semilogy(SNRindB4,smld_err_prb4,'-o');hold offxlabel('SNR(dB)');ylabel('Pe');title('DS系统误码率仿真');2) DS_smld程序function [p]=ds_smld(snr_in_dB, Lc, A, w)%计算信号的幅度加权值snr=10^(snr_in_dB/10);sgma=1;Eb=2*sgma^2*snr;E_chip=Eb/Lc;%Monte Carlo仿真次数N=10000;

第275页:直接序列扩频系统·程序代码

%错误计数器置0num_of_err=0;%生成信源for i=1:N,% Generate the next data bit.temp=rand;if (temp<0.5),data=-1;elsedata=1;end;%生成码片for j=1:Lc,repeated_data(j)=data;

第276页:直接序列扩频系统·程序代码

end;%生成PN序列for j=1:Lc,temp=rand;if (temp<0.5),pn_seq(j)=-1;elsepn_seq(j)=1;end;end;%对信源进行扩频trans_sig=sqrt(E_chip)*repeated_data.*pn_seq;%高斯白噪声noise=sgma*randn(1,Lc);%正弦干扰

第277页:直接序列扩频系统·程序代码

n=(i-1)*Lc+1:i*Lc;interference=A*sin(w*n);%信号加噪得到接收端信号rec_sig=trans_sig+noise+interference;%解扩temp=rec_sig.*pn_seq;decision_variable=sum(temp);%检测误码if (decision_variable<0),decision=-1;elsedecision=1;end;

第278页:直接序列扩频系统·程序代码

%计数器在检测器检到错误时加1if (decision~=data),num_of_err=num_of_err+1;end;end;%误码率计算p=num_of_err/N;选取3组不同幅度的正弦干扰进行仿真并对比无正弦干扰的情况,选取Lc=20。还有一点需要注意的是,每次仿真中需对信号幅值进行加权以满足仿真所需的SNR。

第279页:直接序列扩频系统·运行结果与分析

5.运行结果与分析下图为DS系统误码率的仿真曲线:

第280页:直接序列扩频系统(续)

从上图中可以看到,在存在正弦干扰的情况下,达到所能接受的误码率不要太高的信噪比,与没有正弦干扰的情况相比,差别不大。因此,DS系统对加性正弦干扰有一定的抑制作用。在没有正弦干扰的情况下,较小的信噪比即可达到理想的误码率,但仍然存在一定的干扰,这部分干扰就是高斯白噪声造成的。6.思考题

  • (1)正弦干扰的幅度为什么要满足A<Lc?
  • (2)图3.83的仿真模型是否有不足之处,应如何改进?

第281页:直接序列扩频系统·实验目的

1.实验目的

  • (1)了解扩频通信的理论基础、工作方式。
  • (2)学习跳频扩频系统以及其实现。
  • (3)掌握跳频信号的差错概率计算方法。2.实验原理在跳频(FH)扩频中,将可利用的信道带宽W划分成大量非重叠的频率间歇,在任何信号区间内,传输信号占据一个或多个可用的频率间隙。在每个信号区间内,频率间隙(一个或多个)的选取是按照来自某一个PN发生器的输出伪随机码确定的。图3.85给出了一个FH扩频系统发射端和接受端

第282页:直接序列扩频系统(续)

的方框图。图3.86说明了一个FH信号的示意图。图3.85 FH扩频系统的方框图

第283页:一个FH信号的例子在接收端有一个完全相同

图3.86一个FH信号的例子在接收端有一个完全相同的PN序列发生器,它是与接收信号同步的,用来控制频率合成器的输出。通过频率合成器的输出与接收信号混频,然后由发射端引入的伪随机频率在解调中被移去。这样即可以利用FSK解调出最后所得信号。

第284页:现在考虑一个FH系统

现在考虑一个FH系统,其中用二进制FSK传输数字信息。频率跳变是每比特跳一次。解调和检测是非相干的。在AWGN道上,这样的系统的差错概率是:每比特能量可以表示为Eb=PsTb=Ps/R,其中Ps是平均信号功率,R是比特率。有其中是宽带干扰的平均功率,W为可用的信道带宽。因此,假设就能将SNR表示为:式中,W/R是处理增益;是FH扩频信号的干扰冗余度。

第285页:跳频扩频系统(续)

假设部分频带干扰来自某一干扰台,干扰台挑选a,以使其对通信系统的效果是最佳的。在采用二进制FSK调制和非相干检测的未编码慢跳频系统中,传输频率在频带W内选成了均匀概率的。这样,接收信号将以概率a被干扰,而以(1-a)不被干扰。当被干扰时,差错概率是而当不被干扰时,信号检测假定是无差错的,其中因此,平均差错概率是:干扰台的最好a的取值为:

第286页:跳频扩频系统(续)

对于最坏情况下的部分频带干扰,相应的差错概率是:3.仿真思路通过Monte Garlo仿真,说明一个使用二进制FSK并受到最坏部分频带干扰破坏的FH数字通信系统的性能。仿真系统的方框图如图3.87所示。用均匀随机数发生器(RNG)产生某个二进制信息序列,它作为FSK调制器的输入,FSK调制器的输出受到概率a的加性高斯噪声亏损,0<a≤1。用第二

第287页:个均匀RNG来决定这个加性高斯噪声何时亏

个均匀RNG来决定这个加性高斯噪声何时亏损信号以及何时不亏损信号。在有噪声时,假定传输为0的情况下,检测器的输入是:式中;φ是信道相移;n1c、n1s、n2c和n2s代表加性噪声分量。在没有噪声时有:所以在检测器中没有差错发生。每个噪声分量的方差是为简单起见,置φ = 0并将J0归一化到1,那么,所以在部分频带干扰存在的情况下

第288页:Monte Garlo仿真:部分频带干扰

图3.87 Monte Garlo仿真:部分频带干扰下的二进制FSK系统的模型

第289页:跳频扩频系统·程序代码

4.程序代码1)主程序rho_b1=0:5:35;%rho每比特能量(dB),用于计算仿真误码率rho_b2=0:0.1:35;%rho每比特能量(dB),用于计算理论误码率For i=1:length(rho_b1),smld_err_prb(i)=ss_pe96(rho_b1(i));%计算仿真误码率end;For i=1:length(rho_b2),temp=10^(rho_b2(i)/10);%dB值与数值转换if (temp>2)theo_err_rate(i)=1/(exp(1)*temp);%当rho数值>2时的理论误码率elsetheo_err_rate(i)=(1/2)*exp(-temp/2);%当rho数值≤2时的理论误码率

第290页:跳频扩频系统·程序代码

end;end;semilogy(rho_b1,smld_err_prb,'*');%画仿真误码率图hold onsemilogy(rho_b2,theo_err_rate,‘-’);%画理论误码率图2)仿真模型的误码率计算函数function[p]=ss_pe96(rho_in_dB)%计算仿真误码率函数rho=10^(rho_in_dB/10);%dB值与数值转换Eb=rho;%每比特能量If (rho>2),%计算当rho>2时ɑalpha=2/rho;elsealpha=1;%计算当rho<2时ɑend;

第291页:跳频扩频系统·程序代码

sgma=sqrt(1/(2*alpha));%噪声方差N=10000;%传输比特数for i=1:N,%生成信号序列temp=rand;if (temp<0.5)data(i)=1;elsedata(i)=0;end;end;for i=1:N,%生成接受信号if (data(i)==0),rlc(i)=sqrt(Eb);rls(i)=0;r2c(i)=0;

第292页:跳频扩频系统·程序代码

r2s(i)=0;elserlc(i)=0;rls(i)=0;r2c(i)=sqrt(Eb);r2s(i)=0;end;if (rand<alpha),%依据干扰概率给接受信号添加噪声rlc(i)=rlc(i)+gngauss(sgma);rls(i)=rls(i)+gngauss(sgma);r2c(i)=r2c(i)+gngauss(sgma);r2s(i)=r2s(i)+gngauss(sgma);end;end

第293页:跳频扩频系统·程序代码

num_of_err=0;fori=1:N,%检测并计算误码个数r1=rlc(i)^2+rls(i)^2;%检测器的第一输入变量r2=r2c(i)^2+r2s(i)^2;%检测器的第二输入变量if(r1>r2),decis=0;elsedecis=1;end;if (decis~=data(i)),num_of_err= num_of_err+1;end;end;p= num_of_err/N;

第294页:高斯随机噪声函数程序代码

3)高斯随机噪声函数function[gsrv1,gsrv2]=gngauss(m,sgma)Ifnargin==0,m=0;sgma=1;%如果输入变量缺失,则均值为0,方差为1elseifnargin==1,sgma=m;m=0;%如果输入变量只有一个,则均值为0,方差为输入值end;u=rand;z=sgma*(sqrt(2*log(1/(1-u))));%瑞利分布计算u=rand;gsrv1=m+z*cos(2*pi*u);%同相分量gsrv2=m+z*sin(2*pi*u);%正交分量

第295页:跳频扩频系统·运行结果与分析

5.运行结果与分析由仿真结果图3.88可知,在给出在最坏部分频带干扰下,其差错率随成反比减小。图3.88 Monte Garlo仿真:6.思考题

  • (1)扩频与调制有什么区别和联系?
  • (2)跳频通信系统与直接序列扩频通信系统各有什么特点?

第296页:本章小结

本章小结本章通过21个例子,以信号传递过程为顺序,讲述了通信原理课程的核心知识脉络,并讲述了MATLAB在通信过程各个方面仿真的实例和方法。本章是进一步学习移动通信和通信理论仿真及研究的基础。

第297页:结束页

Thanks书山有路勤为径,学海无涯苦作舟。好好学习,天天向上

顶部目录