Matlab中卷积码译码器的误码率分析
基于MATLAB的卷积码的分析与应用
基于MATLAB的卷积码的分析与应用毕业设计(论文)任务书基于MATLAB的卷积码的分析与应用摘要随着现代通信的发展,特别是在未来4G通信网络中,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。
因为信道状况的恶劣,信号不可避免会受到干扰而出错。
为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。
前者常常受条件限制,不是所有情况都能采用。
因此差错控制编码得到了广泛应用。
介绍了多种信道编码方式,着重介绍了卷积码的编码方法和解码方式。
介绍了MATLAB的使用方法、编程方法、语句、变量、函数、矩阵等。
介绍了TD-SCDMA通信系统和该系统下的卷积码,搭建了系统通信模型。
编写卷积码的编码和解码程序。
用MATLAB仿真软件对TD-SCDMA系统的卷积码编解码进行仿真。
对其纠正错码性能进行验证,并且对误码率进行仿真和分析。
卷积码的编码解码方式有很多,重点仿真Viterbi算法。
Viterbi算法就是利用卷积码编码器的格图来计算路径度量,选择从起始时刻到终止时刻的惟一幸存路径作为最大似然路径。
沿着最大似然路径回溯到开始时刻,所走过的路径对应的编码输出就是最大似然译码输出序列。
它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。
关键词:卷积码;信道编码;TD-SCDMA;MATLAB目录毕业设计(论文)任务书 (I)摘要 (II)Abstract......................................................................................... 错误!未定义书签。
第1章绪论 . (1)1.1课题研究的背景和来源 (1)1.2主要内容 (2)第2章相关理论介绍 (3)2.1信道编码 (3)2.1.1 信道编码的分类 (3)2.1.2 编码效率 (3)2.2线性分组码 (3)2.3循环码 (5)2.4卷积码 (6)2.4.1 卷积码简介 (7)2.4.2 卷积码的编码 (7)2.4.3 卷积码的解码 (13)第3章MATLAB应用 (21)3.1数和算术的表示方法 (21)3.2向量与矩阵运算 (21)3.2.1 通过语句和函数产生 (21)3.2.2 矩阵操作 (22)3.3矩阵的基本运算 (22)3.3.1 矩阵乘法 (22)3.3.2 矩阵除法 (23)3.4MATLAB编程 (23)3.4.1 关系运算 (23)3.4.2 控制流 (25)第4章卷积码的设计与仿真 (27)4.1TD-SCDMA系统 (27)4.1.1 系统简介 (27)4.1.2 仿真通信系统模型 (27)4.2卷积编码设计 (28)4.3编解码程序实现 (29)4.3.1 卷积码编解码设计 (29)4.3.2 卷积码编解码程序设计 (32)4.4卷积码实现 (34)4.4.1 (2,1)卷积码的仿真研究 (34)4.4.2 (3,1)卷积码的仿真研究 (36)4.5卷积码误码率 (38)第5章结论 (41)5.1总结 (41)5.2展望 (41)参考文献 (43)致谢 (45)第1章绪论1.1课题研究的背景和来源纠错编码己有五十几年历史,早在1948年,香农(Shannon)在他的开创性论文“通信的数学理论”中,首次阐明了在有扰信道中实现可靠通信的方法,提出了著名的有扰信道编码定理,奠定了纠错码的基石。
基于MATLAB对卷积码的性能分析
基于MATLAB对卷积码的性能分析【摘要】本文对比了在加性高斯白噪声(AWGN)信道下经BPSK调制后的数据不编码与添加卷积编码后接收到的信道输出的误码性能,并通过对比对卷积码性能进行分析。
采用MATLAB自编函数对[2,1,8]卷积码以及维特比译码进行仿真,且对其性能进行分析。
由于卷积码有性能floor,编码增益随信噪比降低而体现不明显。
仿真结果表明:当信噪比等于-1dB时,一个序列通过加性高斯白噪声信道后接收到的信道输出误比特率大于10-1,且该序列运用[2,1,8]卷积码编码,维特比译码(硬判决)后所得的序列误比特率升高。
当信噪比为2dB时,一个序列通过加性高斯白噪声信道后接收到的信道输出误比特率约为4*10-2,且该序列运用[2,1,8]卷积码编码,维特比译码后所得的序列误比特率小于10-3,误码率远低于不编码时的误码率。
因此卷积码适用于信道输出误码率比较低时候。
【关键词】维特比译码;卷积码;误比特率;马尔科夫性1.引言卷积码的编码器是由一个有k位输入、n位输出,且具有m位移位寄存器构成的有限状态的有记忆系统,通常称它为时序网络。
[1]编码器的整体约束长度为v,是所有k个移位寄存器的长度之和。
具有这样的编码器的卷积码称作[n,k,v]卷积码。
对于一个(n,1,v)编码器,约束长度v等于存储级数m。
卷积码是由k个信息比特编码成n(n>k)比特的码组,编码出的n比特码组值不仅与当前码字中的k个信息比特值有关,而且与其前面v个码组中的v*k个信息比特值有关。
卷积码有三种译码方式:序列译码、门限译码和概率译码。
其中,概率译码根据最大似然译码原理在所有可能路径中求取与接收路径最相似的一条路径,具有最佳的纠错性能,[2]维特比译码是概率译码中极重要的一种方式。
序列译码和门限译码则不一定能找出与接收路径最相似的一条路径。
不同于维特比译码,门限译码与序列译码所需的计算量是可变的且对于给定信息分组的最终判决仅仅基于(m+1)个接收分组,而不是基于整个接收序列。
误码率matlab
误码率matlab
误码率(Bit Error Rate,简称BER)是衡量数字通信系统性
能的重要指标之一。
在MATLAB中,我们可以使用各种方法来计算和
分析误码率。
一种常见的方法是使用通信系统工具箱(Communications System Toolbox)中提供的函数来进行误码率分析。
首先,我们需要生成一个适当的信号来模拟数字通信系统。
可
以使用随机数生成函数来创建数字信号,然后将其调制为模拟信号。
接下来,我们可以加入信道模型,例如高斯噪声信道,以模拟实际
通信环境中的噪声影响。
然后,我们可以使用接收端的解调器对接
收到的信号进行解调,并与发送端的原始信号进行比较,以计算误
码率。
在MATLAB中,可以使用通信系统工具箱中的函数如awgn(添
加高斯噪声)、modulate(调制)、demodulate(解调)等来实现
上述步骤。
一旦接收到解调后的信号,我们可以使用比特比特比函
数(biterr)来计算误码率。
除了这种基本方法外,MATLAB还提供了许多其他用于误码率分
析的工具和函数。
例如,可以使用误码率曲线(BER curve)来可视
化不同信噪比下的误码率表现,以便更直观地了解系统性能。
此外,还可以利用MATLAB的并行计算功能来加速大规模误码率仿真的计算
过程。
总之,MATLAB提供了丰富的工具和函数来进行误码率分析,可
以根据具体的通信系统模型和需求选择合适的方法进行计算和分析。
希望这些信息能够帮助你更好地理解在MATLAB中进行误码率分析的
方法。
使用MATLAB进行卷积运算的常见错误及解决方法
使用MATLAB进行卷积运算的常见错误及解决方法引言:卷积运算是数字信号处理中常用的一种操作,广泛应用于图像处理、音频处理、通信等领域。
而MATLAB作为一款强大的数学软件,也提供了方便快捷的卷积函数供我们使用。
然而,在实际操作中,由于对卷积运算的理解不够深入或者对MATLAB函数的使用不够熟悉,很容易犯一些常见的错误。
本文将针对使用MATLAB进行卷积运算的常见错误进行介绍,并给出相应的解决方法。
一、错误一:输入信号维度不匹配在进行卷积运算时,输入信号的维度必须相匹配。
一般情况下,MATLAB中的卷积函数conv()要求输入的两个信号长度相等或者至少有一个信号的长度大于另一个信号的长度,即两个信号的维度要满足M>=N(M和N分别为两个信号的长度)。
如果输入信号的维度不匹配,就会产生错误或得到错误的结果。
解决方法:确保要用于卷积运算的两个信号的维度匹配。
可以通过使用MATLAB函数reshape()或者resize()来重新调整信号的维度,使其满足卷积运算的要求。
二、错误二:边界效应处理不当在卷积运算中,边界效应是一个常见的问题。
默认情况下,MATLAB中的卷积函数conv()会采用边界补零(zero padding)的方式处理输入信号的边界,这可能会导致卷积结果出现不符合预期的边界效应。
解决方法:可以通过使用MATLAB函数padarray()来指定合适的填充方式,并对输入信号进行合适的边界处理。
常用的填充方式有:1. 边界复制(replicate):将信号边界的元素复制到填充位置。
2. 对称填充(symmetric):将信号的边界元素按对称方式填充到填充位置。
3. 循环填充(circular):将信号进行循环补充。
三、错误三:卷积核颠倒在进行卷积运算时,常常需要将卷积核(也称为滤波器)进行颠倒操作。
这是因为卷积运算中,卷积核是沿着输入信号进行滑动的,颠倒操作可以保证卷积核与输入信号的顺序一致,得到正确的卷积结果。
MATLAB实验OFDM误码率仿真(AWGN)
三、实验内容
(1) 发送部分 ① 对产生的 0 、1 比特流进行 16QAM 调制 ,映射到星座图上 ,即将数据变为复平面 内的数据; ② 将变换后的数据进行串并转换进行 IFFT 变换后在进行并串转换。 为了避免多径造传播成 的 IS I 干扰,要对每一 个 OFD M 符号加循环前缀( CP ) 。为 了避免码间干扰,CP 中的信号与对应 OFDM 符号尾部宽度为 Tg 的部分相同,Tg 为人 为设定。本实验中为 OFDM 符号长度的 1/4 。 ③ 加保护间隔。 为了最大限度的消除码间干扰, 该保护间隔一般大于多径信道的最大时延, 这样一个符号的多径干扰就不会对下一个符号造成干扰。将产生的 OFDM 符号组成一个 串行序列,即组帧。 (2)信道部分: AWGN 信道
二进制 信息
映射
s/p
x ( n) 导频 x(k ) 插入保 xk ( n) IFFT P/S 护间隔 插入
信道
输出 信息
去映射
P/S
信道 估计 y(k)
FFT
y ( n)
去保护 间隔
yk ( n )
S/P
+
AWGN
n
图 1 基带 OFDM 系统框图 1、产生二进制信息,这个可以通过 matlab 中的函数直接产生二进制信源。 2、映射:本实验采用的是 16QAM 调制。 3、串并转换、插入导频:OFDM 的原理就是通过串并转换将高速传输的串行数据转换为并行 传输的数据,在 matlab 中,串并转换是通过 reshape(x,para,Ns)来实现的,将串行传输的 信号 x 转换为 para 个并行传输的子数据流,每个数据流中符号的个数为 Ns。为了接收端能 够进行信道估计,在发送端要在发送信号中插入导频,导频的分布模式一般分为块状导频
卷积码解码的误码率matlab
卷积码解码的误码率matlab卷积码是一种常用的编码技术,用于在通信系统中提高数据传输的可靠性。
解码卷积码是一个重要的任务,其中一个评估指标是误码率(Bit Error Rate,简称BER),它表示解码后的数据与原始数据之间的差异。
在MATLAB中,可以使用通信工具箱(Communications Toolbox)来进行卷积码的解码和误码率的计算。
下面是一个基本的步骤:1. 定义卷积码参数,包括码率(rate)、生成多项式(polynomials)等。
2. 创建卷积编码器和解码器,使用comm.ConvolutionalEncoder和comm.ViterbiDecoder函数创建卷积编码器和解码器对象。
3. 生成随机数据,使用randi函数生成需要编码的随机数据。
4. 编码数据,使用卷积编码器对象对数据进行编码。
5. 添加信道噪声,可以使用AWGN信道(Additive White Gaussian Noise)模拟信道噪声。
使用comm.AWGNChannel函数添加噪声。
6. 解码数据,使用卷积解码器对象对接收到的数据进行解码。
7. 计算误码率,比较解码后的数据与原始数据之间的差异,计算误码率。
下面是一个简单的MATLAB代码示例:matlab.% 定义卷积码参数。
rate = 1/2; % 码率为1/2。
constraintLength = 7; % 约束长度为7。
polynomials = [171 133]; % 生成多项式。
% 创建卷积编码器和解码器。
encoder = comm.ConvolutionalEncoder('TerminationMethod', 'Truncated');encoder.PuncturePatternSource = 'Property';encoder.PuncturePattern = [1;1;1;0;1;0;1];decoder = comm.ViterbiDecoder('TerminationMethod','Truncated');decoder.PuncturePatternSource = 'Property';decoder.PuncturePattern = [1;1;0;1;0;1;1];% 生成随机数据。
卷积码编译码的Matlab仿真及其性能研究
卷积码编译码的Matlab仿真及其性能研究作者:吴亚婷来源:《电脑知识与技术》2010年第04期摘要:提出了一种(2,1,7)卷积编码及其维特比(Viterbi)译码的软件实现方案,在Matlab环境中应用软件技术实现了(2,1,7)卷积码的Viterbi译码器功能。
测试证明,该Viterbi译码算法在低信噪比下的误码率仍能达到10-6。
关键词:卷积编码;维特比译码;Matlab中图分类号:TP314文献标识码:A文章编号:1009-3044(2010)04-0878-02The Simulation and Capability Study of Convolutional Code Encoding and DecodingWU Ya-ting(School of Computer Science and Information, Guizhou University, Guiyang 550025, China)Abstract: A software scheme of (2,1,7) convolutional coding and Viterbi decoding technology is presented,which implements Viterbi decoder function of (2,1,7) convolutional code in theMatlab.According to the test,the BER(Bit Error Rate)of Viterbi algorithm can still reach 10-6 in the low SNR( Signal-to-Noise Ratio).Key words: convolutional coding; viterbi decoding; matlab卷积码是由Elias于1955年提出的。
卷积码在编码过程中,将一个码组中r个监督码与信息元的相关性从本码组扩展到以前若干段时刻的码组,在译码时不仅从此时刻收到的码组中提取译码信息,而且还可从与监督码相关的各码组中提取有用的译码信息。
MATLAB实现卷积码编译码要点总结计划
本科生毕业论文(设计)题目:MATLAB 实现卷积码编译码专业代码:作者姓名:学号:单位:指导教师:年代日聊城大学本科毕业论文(设计)目录序言-----------------------------------------------------11 .纠错码基本理论----------------------------------------2纠错码基本理论-----------------------------------------------2纠错码观点-------------------------------------------------2基来源理和性能参数-----------------------------------------2几种常用的纠错码---------------------------------------------62 .卷积码的基本理论--------------------------------------8卷积码介绍---------------------------------------------------8卷积码的差错控制原理-----------------------------------8卷积码编码原理----------------------------------------------10卷积码分析表示法--------------------------------------10卷积码图形表示法--------------------------------------11卷积码译码原理----------------------------------------------15卷积码三种译码方式------------------------------------15V ITERBI译码原理----------------------------------------163.卷积码编译码及MATLAB仿真----------------------------18M概括--------------------------------------------------18ATLABM ATLAB的特色------------------------------------------19M工具箱和内容------------------------------------19ATLAB卷积码编码及仿真--------------------------------------------20编码程序----------------------------------------------20信道传输过程仿真--------------------------------------------21维特比译码程序及仿真----------------------------------------22维特比译码算法分析------------------------------------23V ITERBI译码程序---------------------------------------25VITERBI 译码仿真-----------------------------------28 MATLAB信噪比对卷积码译码性能的影响--------------------------282聊城大学本科毕业论文(设计)码率对卷积码译码性能的影响----------------------------30拘束长度对卷积码误码性能的影响------------------------31回溯长度对卷积码误码性能的影响------------------------32裁决方式对卷积码误码性能的影响------------------------324.结论及展望------------------------------------------34结论--------------------------------------------------------34展望--------------------------------------------------------355.结束语-----------------------------------------------36参照文件------------------------------------------------37道谢----------------------------------------------------38附录----------------------------------------------------393聊城大学本科毕业论文(设计)纲要在数字通讯系统中,往常采纳差错控制编码来提升系统的靠谱性。
基于MATLAB对卷积码的性能分析
1 . 引 言
卷积 码 的编 码器 是 由一个 有k 位 输 入、n 位 输 出,且具有m 位 移 位 寄 存 器 构 成 的有 限 状 态 的有 记 忆 系 统 ,通 常 称 它 为 时 序 网 络 。 …编 码 器 的 整 体 约 束 长 度 为 v, 是 所 有 k 个 移 位 寄 存 器 的 长 度 之 和 。 具 有 这 样 的 编 码 器 的 卷 积 码 称 作 [ n , k , v ] 卷 积 码 。 对 于 一个 ( n , 1 , v ) 编 码 器 ,约束长度v 等于存 储级数n l 。 卷 积 码 是 由k 个 信 息 比特 编 码 成 n ( n > k ) 比 特 的 码 组 ,编 码 出 的n 比 特 码 组 值 不 仅 与 当 前 码 字 中 的k 个 信 息 比特 值 有 关 , 而 且 与其前 面v 个 码 组 中 的v * k 个 信 息 比特 值 有关 。 卷 积 码 有 三 种 译 码 方 式 : 序 列 译 码 、 门 限 译 码 和 概 率 译 码 。 其 中 ,概 率 译 码 根 据 最 大 似 然 译 码 原 理 在 所 有 可 能 路 径 中 求 取 与 接 收 路 径 最 相 似 的 一 条 路 径 ,具有最佳 的纠错性 能 , 维 特 比译 码 是 概 率 译 码 中极 重 要 的 一种 方 式 。 序 列 译 码 和 门 限译 码 则 不 一 定 能 找
与维 特 比译 码 所 使 用 的对 数 似 然 量 度 不 同 ,序 列译 码 所使 用 的 量度 为 F a n o 量 度 。 在 接 收序 列 受 扰 严 重 的 情 况 下 ,序 列 译 码 的 计 算 量 大 于 维特 比译 码 所 需 的 固 定 计 算 量 , 虽 然 序 列译 码 要 求 的 平 均 计 算 次 数 通 常 小 于 维 特 比 译 码 。在 采 用 并 行 处 理 的情 况 下 ,维 特 比译 码 的 速 度 会 优 于 序 列 译 码 。在 同样 码 率 和 存 储 级 数 的 条 件 下 , 门 限 译 码 的 性 能 比维 特 比
误码率信噪比曲线matlab
一、引言误码率信噪比曲线(BER-SNR curve)是衡量数字通信系统性能的重要指标,也是评估调制解调器设计的关键参数之一。
Matlab作为一款强大的数学软件,提供了丰富的工具和函数来进行误码率信噪比曲线的仿真和分析。
本文将使用Matlab来分析、绘制误码率信噪比曲线,并简要介绍实现的方法和步骤。
二、误码率信噪比曲线的定义在数字通信系统中,误码率是衡量信号传输质量的重要指标,它指的是接收端在正确码字和错误码字之间作出错误选择的概率。
信噪比则是指信号传输中信号和噪声功率的比值,通常以分贝(dB)为单位表示。
误码率信噪比曲线即为在不同信噪比条件下,误码率的变化曲线,通常以对数坐标下的曲线形式呈现。
三、Matlab实现误码率信噪比曲线1.准备信号在Matlab中生成或加载待传输的数字信号,可以使用随机数生成函数或者读取实际信号文件。
2.添加噪声接下来,在生成的信号中添加高斯噪声,模拟信道传输过程中的干扰。
可以使用Matlab提供的awgn函数来实现对信号的添加噪声操作。
3.解调和检测对添加了噪声的信号进行解调和检测,得到接收端的比特流数据。
4.计算误码率将接收到的数据与发送端的比特流数据进行对比,计算误码率,即接收端错误选择码字的概率。
5.绘制误码率信噪比曲线在不同信噪比的条件下,重复以上步骤,得到一系列误码率数据点,并利用Matlab的绘图函数绘制误码率信噪比曲线。
四、Matlab代码示例以下是一个简单的Matlab代码示例,用于实现误码率信噪比曲线的仿真和绘制:```生成随机数字信号data = randi([0,1],1,1000);发送端modSignal = qammod(data, 16);添加高斯噪声snr = 0:2:20;for i = 1:length(snr)rxSignal = awgn(modSignal, snr(i), 'measured');接收端demodData = qamdemod(rxSignal, 16);计算误码率errorRate(i) = biterr(data, demodData)/length(data);end绘制误码率信噪比曲线semilogy(snr, errorRate);xlabel('信噪比(dB)');ylabel('误码率');title('误码率信噪比曲线');```五、结论通过Matlab的强大工具和函数库,我们可以方便地仿真和分析数字通信系统的误码率信噪比曲线。
Matlab中卷积码译码器的误码率分析
Inherit via internal rule
表3.7 Viterbi Decoder(维特比译码器)的参数设置
参数名称
参数值
模块类型
Viterbi Decoder
Trellis structure
poly2trellis(7, [171 133])
Decision type
如果卷积编码器的输入长度为k,输出信号的长度为n,则维特比译码器的输入好输出信号长度分别是n和k的整数倍。
维特比译码器模块主要有以下几个参数:
(1)Trellis structure(Trellis结构)
与维特比一冒起相对应的卷积编码器的Trellis结构。它既可以是Matlab工作区中的一个Trellis变量,也可以是通过poly2trellis()函数产生的Trellis结构。
可见,本设计由3个子系统组成:信源模块对随机二进制信号进行卷积码和二进制相位调制,输出基带调制信号;信道模块是一个有噪声信道;信宿模块对调制信号进行软判决译码,得到原始信息序列,并且计算调制信号的误码率。
信源模块由贝努利二进制序列产生器、卷积码编码器以及二进制相位调制3个模块组成,如图3.4所示
图3.4信源模块系统框图
(2)Decision Type(判决类型)
维特比译码器德判决类型有3种:Unquantized(非量化)、Hard Decision(硬判决)和Soft Decision(软判决),如表3.1所示。
表3.1维特比译码器的判决类型
判决类型
解码器的输出类型
说明
Unquantized
实数
+1表示逻辑0;-1表示逻辑1
表3.5AWGN Channel(加性高斯白噪声模块)的参数设置
matlab 卷积码 码率
matlab 卷积码码率
卷积码(Convolutional Code)是一种用于错误纠正的编码技术,广泛应用于通信系统中。
在MATLAB中,可以使用`convenc`函数来生成卷积码。
卷积码的码率(Code Rate)是指输入数据比特数与输出数据比特数之间的比率。
一般来说,码率越高,纠错能力越强,但传输效率越低。
在MATLAB中,可以通过设置`convenc`函数的参数来指定卷积码的码率。
例如,以下代码生成一个码率为1/2的卷积码:```matlab
% 生成一个码率为1/2的卷积码
c = convenc(data, 2);
```
其中,`data`是输入数据,`2`表示码率为1/2。
需要注意的是,卷积码的码率并不是一个固定的值,而是一个范围。
这是因为卷积码在编码过程中会引入冗余比特,这些冗余比特的数量取决于具体的编码参数。
因此,在实际应用中,需要根据具体需求选择合适的编码参数来获得最佳的纠错性能和传输效率。
通信原理课程设计报告数据传输系统误码率测试器的matlab实现及性能分析
数据传输系统误码率测试器的MATLAB实现及性能分析学生姓名:xx 指导老师:ss摘要本课程设计主要运用MATLAB集成环境下的Simulink仿真平台设计进行数据传输系统误码率测试器的仿真。
在本次课程设计中先根据9级m序列发生器的结构,从Simulink工具箱中找所需元件,对输入的随机数据信号与其模2和计算以加密,合理设置好参数,送入含噪信道,在接收端与相同序列进行模2和以解密,改变信道误码率大小,测试发送信号与接收信号的误码率大小,其中可以通过不断的修改优化得到需要信号,最后通过对输出波形的分析得出仿真是否成功。
关键词Simulink;数据系统;m序列;误码率1引言本次课程设计主要运用MATLAB软件,在Simulink平台下建立仿真模型。
实现数据传输系统的的误码率计算的过程,通过比较发送信号与接收信号之间产生的误码率大小,分析比较,改变参数设置,观察波形变化及误码率大小的变化,并对其进行分析总结。
1.1课程设计的目的通信原理是通信工程专业的一门骨干的专业课,是通信工程专业后续专业课的基础。
掌握通信原理课程的知识可使学生打下一个坚实的专业基础,可提高处理通信系统问题能力和素质。
由于通信工程专业理论深、实践性强,做好课程设计,对学生掌握本专业的知识、提高其基本能力是非常重要的。
通信课程设计的目的是为了学生加深对所学的通信原理知识理解,培养学生专业素质,提高利用通信原理知识处理通信系统问题的能力,为今后的专业课程的学习、毕业设计和工作打下良好的基础。
使学生能比较扎实地掌握本专业的基础知识和基本理论,掌握数字通信系统及有关设备的分析、开发等基本技能,受到必要工程训练和初步的科学研究方法和实践训练,增强分析和解决问题的能力,了解本通信专业的新发展。
1.2课程设计的基本任务和要求本次课程设计的基本任务:(1)使学生通过专业课程设计掌握通信中常用的信号处理方法,能够分析简单通信系统的性能。
(2)使学生掌握通信电路的设计方法,能够进行设计简单的通信电路系统。
用MATLAB绘制误码率曲线.
点标记
. 点 o 小圆圈 x 叉子符 + 加号 * 星号 s 方格 d 菱形 ^ 朝上三角 v 朝下三角 > 朝右三角 < 朝左三角 p 五角星 h 六角星
颜色
y m c r g b w k 黄色 棕色 青色 红色 绿色 蓝色 白色 黑色
• 编写m文件绘制两条误码率曲线
clear; x=0:10; %X表示信噪比的取值范围
AWGN
GMSK 解调
误码率仪2
仿真模型命名为FSKGMSK.mdl
三端口示 波器2
• 要求:信噪比从1逐渐取值到10,分别运行仿真,并把误码率的结果绘制成曲线
为此,需要将两个AWGN信道的信噪比都取名为xSNR。
AWGN Channel
两个误码率仪分别输出到工作空间,并为输出变量命名为
ErrorVec1和ErrorVec2
for i=1:length(x) %针对每次信噪比的取值,进行一次BFSK模型的仿真
xSNR=x(i); %每次仿真时AWGN模块的信噪比参数xSNR的取值 %运行一次BFSK模型的仿真 sim(‘FSKGMSK’);
y(i)=ErrorVec1(1);
z(i)=ErrorVec2(1);
%将本次仿真的误码率1结果输出给y变量的第i个值
y(i)=xErrorRate(1);
end
semilogy(x,y) %10仿真结束后,绘制误码率图,用log的坐标来表示
• 编写该m文件后,运行此文件,可在工作空间中产生仿真需要的变量,并绘 制出误码率曲线。
为仿真模型同时绘制两条误码率曲线
• 在知识点“搭建模型比较FSK、GSMK的误码率”模型中,需要绘制两个误码率曲 线进行比较
(完整word版)16QAM理论误码率与实际误码率MATLAB仿真程序_共9页
%%16QAM%%等效基带调制clc;clear all;close all;%%关闭所有窗口,比如之前画的图nsymbol = 10000;%%每种信噪比下符号数的发送符号数,10^6个数errornumber = zeros(1,10);errorratio = zeros(1,10);data = randi([0,1],1,4*nsymbol);%%产生1行,4*nsymbol列均匀分布的随机数data_mod1 = zeros(1,nsymbol);%%各参量初始化data_mod2 = zeros(1,nsymbol);data_demod1 = zeros(1,nsymbol);data_demod2 = zeros(1,nsymbol);data_demod3 = zeros(1,nsymbol);data_demod4 = zeros(1,nsymbol);s_receive1 = zeros(1,nsymbol);s_receive2 = zeros(1,nsymbol);for i = 1:nsymbol %%格雷码调制到星座图的映射if data(4*i-3)==0 && data(4*i-2)==0data_mod1(i) = 3;if data(4*i-1)==0 && data(4*i)==0data_mod2(i) = 3;elseif data(4*i-1)==0 && data(4*i)==1data_mod2(i) = 1;elseif data(4*i-1)==1 && data(4*i)==1data_mod2(i) = -1;elseif data(4*i-1)==1 && data(4*i)==0data_mod2(i) = -3;endelseif data(4*i-3)==0 && data(4*i-2)==1data_mod1(i) = 1;if data(4*i-1)==0 && data(4*i)==0data_mod2(i) = 3;elseif data(4*i-1)==0 && data(4*i)==1data_mod2(i) = 1;elseif data(4*i-1)==1 && data(4*i)==1data_mod2(i) = -1;elseif data(4*i-1)==1 && data(4*i)==0data_mod2(i) = -3;endelseif data(4*i-3)==1 && data(4*i-2)==1data_mod1(i) = -1;if data(4*i-1)==0 && data(4*i)==0data_mod2(i) = 3;elseif data(4*i-1)==0 && data(4*i)==1data_mod2(i) = 1;elseif data(4*i-1)==1 && data(4*i)==1data_mod2(i) = -1;elseif data(4*i-1)==1 && data(4*i)==0data_mod2(i) = -3;endelseif data(4*i-3)==1 && data(4*i-2)==0data_mod1(i) = -3;if data(4*i-1)==0 && data(4*i)==0data_mod2(i) = 3;elseif data(4*i-1)==0 && data(4*i)==1data_mod2(i) = 1;elseif data(4*i-1)==1 && data(4*i)==1data_mod2(i) = -1;elseif data(4*i-1)==1 && data(4*i)==0data_mod2(i) = -3;endendendSNR_dB = 1:10;%%%信噪比dB形式SNR = 10.^(SNR_dB/10);%%信噪比转化为线性值for loop= 1:10sigma = sqrt(5/SNR(loop));s_receive1 = data_mod1 + sigma * randn(1,length(data_mod1));s_receive2 = data_mod2 + sigma * randn(1,length(data_mod2));%%??for k = 1:nsymbolif s_receive1(k)>2data_demod1(k) = 0;data_demod2(k) = 0;if s_receive2(k)>2data_demod3(k) = 0;data_demod4(k) = 0;elseif s_receive2(k)>0 && s_receive2(k)<2data_demod3(k) = 0;data_demod4(k) = 1;elseif s_receive2(k)>-2 && s_receive2(k)<0data_demod3(k) = 1;data_demod4(k) = 1;elseif s_receive2(k)<-2data_demod3(k) = 1;endelseif s_receive1(k)>0 && s_receive1(k)<2 data_demod1(k) = 0;data_demod2(k) = 1;if s_receive2(k)>2data_demod3(k) = 0;data_demod4(k) = 0;elseif s_receive2(k)>0 && s_receive2(k)<2 data_demod3(k) = 0;data_demod4(k) = 1;elseif s_receive2(k)>-2 &&s_receive2(k)<0 data_demod3(k) = 1;data_demod4(k) = 1;elseif s_receive2(k)<-2data_demod3(k) = 1;data_demod4(k) = 0;endelseif s_receive1(k)<0 && s_receive1(k)>-2 data_demod1(k) = 1;data_demod2(k) = 1;if s_receive2(k)>2data_demod3(k) = 0;data_demod4(k) = 0;elseif s_receive2(k)>0 && s_receive2(k)<2 data_demod3(k) = 0;data_demod4(k) = 1;elseif s_receive2(k)>-2 && s_receive2(k)<0 data_demod3(k) = 1;data_demod4(k) = 1;elseif s_receive2(k)<-2data_demod3(k) = 1;data_demod4(k) = 0;endelseif s_receive1(k)<-2data_demod1(k) = 1;data_demod2(k) = 0;if s_receive2(k)>2data_demod3(k) = 0;data_demod4(k) = 0;elseif s_receive2(k)>0 && s_receive2(k)<2 data_demod3(k) = 0;data_demod4(k) = 1;elseif s_receive2(k)>-2 && s_receive2(k)<0data_demod4(k) = 1;elseif s_receive2(k)<-2data_demod3(k) = 1;data_demod4(k) = 0;endendif (data_demod1(k) ~= data(k*4-3)) || (data_demod2(k) ~= data(k*4-2))||(data_demod3(k) ~= data(k*4-1)) || (data_demod4(k) ~= data(k*4))errornumber(loop) = errornumber(loop) + 1;endenderrorratio(loop) = errornumber(loop)/nsymbol;endt = 0.75*erfc(sqrt(3*SNR/30));ser_theory = 1-(1-t).^2;%理论误码率,注意Q函数和误差函数的对应关系semilogy(SNR_dB,errorratio,'-k*',SNR_dB,ser_theory,'-ro');title('16QAM信号在AWGN信道下的性能(格雷码)');xlabel('信噪比/dB');ylabel('误码率');legend('误码率','理论误码率');grid on;%%坐标线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通过Matlab软件进行设计与仿真。卷积码的译码有两种方法——软判决和硬判决,此课程设计采用硬判决的维特比译码。
1.1
卷积码是一种向前纠错控制编码。它将连续的信息比特序列映射为连续的编码器输出符号。这种映射是高度结构化的,使得卷积码的译码方法与分组码译码所采用的方法完全不同。可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。对于某个特定的应用,采用分组编码还是采用卷积编码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术[1]。
3 Matlab中卷积码译码器的设计与仿真
3.1
在Matlab软件的Simulink组件库中包含有的两种卷积码译码模块,即后验概率卷积译码器和维特比译码器。图3.1,图3.2所示是维特比译码器参数设置对话框和模块,它通过维特比译码还原出二进制信号序列。
图3.1 维特比译码器参数设置
图3.2 维特比译码器模块
卷积码的译码方法有两大类:一类是大数逻辑译码,又称门限译码(硬判决,编者注);另一种是概率译码(软判决,编者注),概率译码又分为维特比译码和序列译码两种。门限译码方法是以分组码理论为基础的,其译码设备简单,速度快,但其误码性能要比概率译码法差[2]。
当卷积码的约束长度不太大时,与序列译码相比,维特比译码器比较简单,计算速度快。维特比译码算法是1967年由Viterbi提出,近年来有大的发展。目前在数字通信的前向纠错系统中用的较多,而且在卫星深空通信中应用更多,该算法在卫星通信中已被采用作为标准技术。
设输入编码器的信息序列为(11011000),则由编码器对应输出的序列为Y=(1101010001011100),编码器的状态转移路线为abdcbdca。若收到的序列R=(0101011001011100),对照网格图来说明维特比译码的方法。
由于该卷积码的约束长度为6位,因此先选择接收序列的前6位序列R1=(010101)同到达第3时刻的可能的8个码序列(即8条路径)进行比较,并计算出码距。该例中到达第3时刻a点的路径序列是(000000)和(111011),他们与R1的距离分别为3和4;到达第3时刻b点的路径序列是(000011)和(111000),他们与R1的距离分别为3和4;到达第3时刻c点的路径序列是(001110)和(110101),他们与R1的距离分别为4和1;到达第3时刻d点的路径序列是(001101)和(110110),他们与R1的距离分别为2和3。上述每个节点都保留码距较小的路径作为幸存路径,所以幸存路径码序列是(000000)、(000011)、(1101001)和(001101),如图2.4所示。用于上面类似的方法可以得到第4、5、6、7时刻的幸存路径。
如果卷积编码器的输入长度为k,输出信号的长度为n,则维特比译码器的输入好输出信号长度分别是n和k的整数倍。
维特比译码器模块主要有以下几个参数:
(1)Trellis structure(Trellis结构)
本课程设计便是通过Matlab设计一个硬判决维特比译码输出的完整电路,并进行误码率分析。
1.2
卷积码,又称连环码,是由伊莱亚斯(积编码的最佳译码准则为:在给定已知编码结构、信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。对于二进制对称信道,最相似传送序列就是在汉明距离上与接收序列最近的序列。
长沙理工大学
《通信原理》课程设计报告
郭林
学院计算机与通信工程专业通信工程
班级540802学号11
学生姓名郭林指导教师龙敏
课程成绩完成日期2008年1月11日
基于Matlab的卷积码译码器的
设计与仿真
学生姓名:郭林指导老师:**
摘要本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通过Matlab软件进行设计与仿真,并进行误码率分析。在课程设计中,系统开发平台为Windows VistaUltimate,程序设计与仿真均采用MatlabR2007a(7.4),最后仿真详单与理论分析一致。
需要指出的是,对于某个节点,如果比较两条路径与接收序列的累计码距值相等时,则可以任意选者一条路径作为幸存路径,吃时不会影响最终的译码结果。在码的终了时刻a状态,得到一条幸存路径。如果2.5所示。由此可看到译码器
输出是R’=(1101010001011100),即可变换成序列(11011000),恢复了发端原始信息。比较R’和R序列,可以看到在译码过程中已纠正了在码序列第1和第7位上的差错。当然如果差错出现太频繁,以致超出卷积码的纠错能力,还是会发生纠误的。
2
采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。如果发送L组信息比特,那么对于(n,k)卷积码来说,可能发送的序列有2kL个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。当传信率和信息组数L较大时,使得译码器难以实现。维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。它并不是在网格图上一次比较所有可能的2kL条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。
下面以图2.1的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图2.2所
示。维特比译码需要利用图来说明移码过程。根据卷积码画网格的方法,我们可以画出该码的网格图,如图2.3所示。该图设输入信息数目L=5,所以画L+N=8个时间单位,图中分别标以0至7。这里设编码器从a状态开始运作。该网格图的每一条路径都对应着不同的输入信息序列。由于所有可能输入信息序列共有2kL个,因而网格图中所有可能的路径也为2kL条。这里节点a=00,b=01,c=10,d=11。