第 6 章 通信系统仿真
第-6-章 通信系统仿真
6.1 通信工具箱函数
6.2 信息的度量和编码
6.3 差错控制编/译码方法
6.4 模拟调制和解调
6.5 数字调制和解调
6.6 通信系统的性能仿真
6.7 扩频通信系统的仿真
第 6 章 通信系统仿真
6.1通信工具箱的函数
在MATLAB的Communication Toolbox(通信工具箱)中提供了许多仿真函数和模
块,用于对通信系统进行仿真和分析。主要包括两部分内容:通信函数命令和Simulink
的Communications Blockset(通信模块集)仿真模块。用户既可以在MATLAB的工作空
间中直接调用工具箱中的函数,也可以使用Simulink平台构造自己的仿真模块,以达到
扩充工具箱的内容。通信工具箱中的函数名称和内容列表,其内容包含:
Signal Sources(信号源函数);
Signal Analysis function(信号分析函数);
Source Coding(信源编码);
Error Control Coding(差错控制编码函数);
Lower Level Function for Error Control Coding(差错控制编码的底层函数);
Modulation/Demodulation(调制/解调函数)
Special Filters(特殊滤波器设计函数);
Lower Level Function for Specials Filters(设计特殊滤波器的底层函数);
Channel Functions(信道函数);
Galosi Field Computation(有限域估计函数);
Utilities(实用工具函数)。
第 6 章 通信系统仿真
6.2 信息的量度与编码
信源熵的输出可以用随机过程来表达。对于一个离散无记忆平稳随机过程,其信息量
(熵)定义为:
)(
xp
其中X表示信源取值集合,p(x)是信源取值x的概率。
log)(
xp
XH
(
)
Xx
6.2.1 Huffman编码
信源编码可分为两类:无失真编码和限失真编码。Huffman编码的基本原理就是为
概率较小的信源输出分配较长的码字,而对那些出现可能性较大的信源输出分配较短
的码字。
Huffman编码算法及步骤如下:
① 将信源消息按照概率大小顺序排队。
② 按照一定的规则,从最小概率的两个消息开始编码。
③ 将经过编码的两个消息的概率合并,并重新按照概率大小排序,重复步骤②。
④ 重复上面步骤③,一直到合并的概率达到1时停止。这样便可以得到编码树状图
。
⑤ 按照后出先编码的方式编程,即从数的根部开始,将0和1分别放到合并成同一
节点的任意两个支路上,这样就产生了这组Huffman码。
第 6 章 通信系统仿真
6.2.2 MATLAB信源编/译码方法
大多数信源(比如语音、图像)最开始都是模拟信号,为了将信源输出数字化,
信源必须量化为确定数目的级数。量化方案可划分为标量量化和矢量量化两种。在
标量量化中每个信源输出都分别被量化,标量量化可进一步分为均匀量化和非均匀
量化。在均匀量化中量化区域是等长的;在非均匀量化中量化区域可以是不等长的。
矢量量化是对信源输出组合进行整体量化。
在标量量化中,随机标量X的定义域被划分成N个互不重叠的区域Ri,1≤ i≤
第 6 章 通信系统仿真
在MATLAB通信工具箱中提供了两种信源编译码的方法:标量量化和预测量化。
1.标量量化
(1)信源编码中的 律或A律压扩计算函数compand( )
格式:out=compand(in, param, V, method)
功能:实现 律或A律压扩,其中param为 值,V为峰值。压扩方式由method指定。
第 6 章 通信系统仿真
(2) 产生量化索引和量化输出值的函数quantiz( )
格式:indx=quantiz(sig, partition)
功能:根据判断向量partition,对输入信号sig产生量化索引indx,indx的长度与
sig矢量的长度相同。
(3) 采用训练序列和Lloyd算法优化标量算法的函数lloyds( )
格式:[parition, codebook]=lloyds(training_set, ini_codebook)
功能:用训练集矢量training_set优化标量量化参数partition和码本codebook。
ini_codebook是码本codebook的初始值。
%以3比特传输信道
[例6-2] 用训练序列和Lloyd算法,对一个正弦信号数据进行标量化。
MATLAB程序如下:
N=2^3;
t=[0:100]*pi/20;
u=cos(t);
[p,c]=lloyds(u,N); %生成分界点矢量和编码手册
[index,quant,distor]=quantiz(u,p,c); %量化信号
plot(t,u,t,quant,'*');
该程序运行结果如图6.3所示。
第 6 章 通信系统仿真
2.预测量化
根据过去发送的信号来估计下一个将要发送的信号值。
(1) 差分脉冲调制编码函数dpcmenco( )
格式:indx=dpcmenco(sig, codebook, partition, predictor)
功能:返回DPCM编码的编码索引indx。其中参数sig为输入信号,predictor为预测器
传递函数,其形式为[0, t1,…, tm]。 预测误差的量化参数由partition和predictor指定。
(2) 信源编码中的DPCM解码函数dpcmdeco( )
格式:sig=dpcmdeco(indx, codebook, predictor)
功能:根据DPCM信号编码索引indx进行解码。predictor为指定的预测器,codebook为
码本。
(3) 用训练数据优化差分脉冲调制参数的函数dpcmopt( )
格式:predictor=dpcmopt(training_set, ord)
功能:对给定训练集的预测器进行估计,训练集及其顺序由training_set和ord
指定,预测器由predictor输出。
第 6 章 通信系统仿真
[例6-3] 用训练数据优化DPCM方法,对一个余弦信号数据进行标量化。
MATLAB程序如下:
N=2^3; %以3比特传输信道
t=[0:100]*pi/20;
u=cos(t);
[predictor,codebook,partition]=dpcmopt(u,1,N); %优化的预测传递函数
[index,quant]=dpcmenco(u,codebook,partition,predictor); %使用DPCM编码
[sig, equant]=dpcmdeco(index, codebook, predictor); %使用DPCM解码
plot(t,u,t,equant,'*');
运行后所得图形如图6.4所示。