MATLAB通信系统仿真
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 6 章 通信系统仿真
2. 卷积纠错编码函数convenc( ) 格式:code=convenc(msg, trellis) 功能:利用poly2trellis函数定义的格形trellis 结构,对二进制矢量信息msg进行卷积
编码。编码器的初始状态为零状态。
3. 将卷积编码多项式转换成格形(trellis)结构函数poly2trellis( ) 格式:trellis = poly2trellis(constrainlength, codegenerator) 功能:将前向反馈卷积编码器的多项式转换成一格形(trellis)结构。 4. 利用Viterbi 算法译卷积码函数vitdec( ) 格式:decoded = vitdec(code,trellis,tblen,opmode,dectype) 功能:利用Viterbi 算法译卷积码。Code为poly2trellis函数或istrellis函数定义的格形 trellis结构的卷积码。参数tblen 取正整数,表示记忆(traceback)深度。参数opmode 代表解码操作模型。
第 6 章 通信系统仿真
6.3 差错控制编/译码方法
在通信系统中,差错控制编/译码技术被广泛地用于检查和纠正信息在传递过程中 发生的错误。在发送端,差错控制编码添加了一定的冗余码元到信源序列;接收时就利 用这些冗余信息来检测和纠正错误。纠错编码主要有分组码和卷积码两种类型。 MATLAB通信工具箱提供了一系列函数用于有限域计算。概率解码中最常用的是 Viterbi解码,用于卷积码解码。常用的纠错编码方法包括线性分组码、海明码、循环码、 BCH码、Reed-Solomon码和卷积码。 1. 纠错编码函数encode( )及译码函数decode( ) 格式:code=encode(msg, N, K, method, opt) 功能:用method指的方法完成纠错编码。其中msg代表信息码元;method是允许的编 码方法,包括hamming 、linear等, opt是一个可选择的优化参数。 格式:msg=decode(code,n,k,method) 功能:用指定的method方式进行译码。为了正确地复制出信源序列,编码和译码的调 用方式必须相同。
第 6 章 通信系统仿真
[例6-6] 利用vitdec函数对一个信号进行卷积码译码的例子。 MATLAB程序如下: t = poly2trellis([3 3],[4 5 7;7 4 2]); k = log2(t.numInputSymbols); msg = [1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 1]; code = convenc(msg,t);
6.4.1带通模拟调制与解调
模拟调制通常分为:幅度调制(AM)、频率调制(FM)和相位调制(PM)。幅度调制 又可分为常规幅度调制(AM)、抑制双边带幅度调制(DSB-AM)、抑制单边带幅度调 制(SSB-AM)和正交幅度调制(QAM)等。解调就是从调制信号中提取消息信号。解调 过程与利用何种解调方式有关。在模拟调制的仿真中包含两个频率:载波频率 fc和
仿真的采样频率 fs。
第 6 章 通信系统仿真
1.双边幅度调制(DSB-AM)与解调 在DSB-AM中,已调信号的时域表示如下式:
u ( t ) m ( t ) c ( t ) A c m ( t ) cos( 2 f c t c )
tblen = 3;
[d1]=vitdec(code,t,tblen,'cont','hard'); [d m p in] = vitdec(code,t,tblen,'cont','hard'); 该程序运行结结果:d1与d相同;d为信息msg的延迟结果, d(tblen*k+1:end)与 msg(1:end-tblen*k)相同。
第 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所示。
第 6 章 通信系统仿真
6.2.2 MATLAB信源编/译码方法
大多数信源(比如语音、图像)最开始都是模拟信号,为了将信源输出数字化, 信源必须量化为确定数目的级数。量化方案可划分为标量量化和矢量量化两种。在 标量量化中每个信源输出都分别被量化,标量量化可进一步分为均匀量化和非均匀
量化。在均匀量化中量化区域是等长的;在非均匀量化中量化区域可以是不等长的。 矢量量化是对信源输出组合进行整体量化。
第 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(实用工具函数)。
在标量量化中,随机标量X的定义域被划分成N个互不重叠的区域Ri,1≤ i≤<N , Ri 被称为量化间隔,且在每个区域内选择一个点作量化级数。这样落在区域Ri内的随机 变量的所有值都被量化为第i个量化级数,用 ˆ x i 来表示。这就意味着: ˆ x Ri Q ( x) xi 易见,这类量化引入了失真,其均方误差为:
第 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的初始值。 [例6-2] 用训练序列和Lloyd算法,对一个正弦信号数据进行标量化。 MATLAB程序如下: N=2^3; %以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 章 通信系统仿真
6.4 模拟调制与解调
根据调制信号的不同,可将调制分为模拟调制和数字调制。模拟调制的输入信
号为连续变化的模拟量,数字调制的调制信号是离散的数字量。在对调制进行仿真 模拟有带通的和基带的两种选择。带通仿真的载波信号包含于传输模型中。由于载 波信号的频率远高于输入信号,根据抽样定理,抽样频率必须至少大于两倍的载波 频率才能正确地恢复信号,因此对高频信号的模拟仿真效率低、速度慢。为了加速 模拟仿真,一般使用基带仿真,也称为低通对等方法。基带仿真使用带通信号的复 包络。
第 6 章 通信系统仿真
6.2 信息的量度与编码
信源熵的输出可以用随机过程来表达。对于一个离散无记忆平稳随机过程,其信息量 (熵)定义为:
H ( X ) p ( x ) log p ( x )
x X
其中X表示信源取值集合,p(x)是信源取值x的概率。
6.2.1 Huffman编码
信源编码可分为两类:无失真编码和限失真编码。Huffman编码的基本原理就是为 概率较小的信源输出分配较长的码字,而对那些出现可能性较大的信源输出分配较短 的码字。 Huffman编码算法及步骤如下: ① 将信源消息按照概率大小顺序排队。 ② 按照一定的规则,从最小概率的两个消息开始编码。 ③ 将经过编码的两个消息的概率合并,并重新按照概率大小排序,重复步骤②。 ④ 重复上面步骤③,一直到合并的概率达到1时停止。这样便可以得到编码树状图 。 ⑤ 按照后出先编码的方式编程,即从数的根部开始,将0和1分别放到合并成同一 节点的任意两个支路上,这样就产生了这组Huffman码。
D
wk.baidu.com R
i 1
N
ˆ 2 ( x x i ) f x ( x ) dx
1
其中f(x)是信源随机变量的概率密度函数。信号量化噪声比(SQNR)为:
SQNR 10 log E[ X
10 2
]
D
第 6 章 通信系统仿真
在MATLAB通信工具箱中提供了两种信源编译码的方法:标量量化和预测量化。 1.标量量化 (1)信源编码中的 律或A律压扩计算函数compand( ) 格式:out=compand(in, param, V, method) 功能:实现 律或A律压扩,其中param为 值,V为峰值。压扩方式由method指定。