【传统编码技术对比】汉明码,RS,卷积码三种编码技术的对比
1.软件版本
matlab2013b
2.核心程序
clc;
clear;
close all;
warning off;%% 参数初始化
sel = 0;if sel == 1;trel = poly2trellis(7,[171 133]);%多项式tblen = 9; %回溯深度
elsetrel = poly2trellis(3,[6 7]);%多项式tblen = 9; %回溯深度
endStep = 10;%仿真时间间隔
Simu_Len = 10000; %仿真的时间长度
Simu_time = 1000;
Pf = 1e-3 : (10e-3-1e-3)/Step : 10e-3-(10e-3-1e-3)/Step; %信道差错概率
Simu_speed = 3*10^10/Step : 3*10^Step/10 : 3*10^10;
msg = (double(rand(1,Simu_Len)>0.5))';%% 主体代码
for i = 1:length(Pf)Err = zeros(1,Simu_time);for j = 1:Simu_timeij%编码Msg_Enc = convenc(msg,trel);Msg_Enc2 = Msg_Enc;%将数据通过信道idx = round(length(Msg_Enc)*Pf(i));idx2 = round(length(Msg_Enc)*rand(1,idx));idx2(find(idx2 == 0)) = 1;for ii = 1:length(idx2)if Msg_Enc(idx2(ii)) == 1Msg_Enc2(idx2(ii)) = 0;elseMsg_Enc2(idx2(ii)) = 1;endend%译码Msg_Dec = vitdec(Msg_Enc2,trel,tblen,'cont','hard'); %计算误码率 [n2,r2] = biterr(Msg_Dec(tblen+1:end),msg(1:end-tblen));Err(j) = n2;endErr2(i) = sum(Err)/(Simu_time*Simu_Len);end%% 曲线仿真
figure;
plot(Pf,Err2,'b-*');
xlabel('channel error rate');
ylabel('BER');%% 3D图
figure;
[X,Y] = meshgrid(Simu_speed,Pf);
Error = [Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' ];
mesh(X,Y,Error);
xlabel('信道差错概率');
ylabel('仿真速度');
zlabel('误码率');if sel == 1;save JJ7.mat X Y Error Pf Err2
elsesave JJ5_4.mat X Y Error Pf Err2
end
clc;
clear;
close all;
warning off;%% 参数初始化
sel = 0;if sel == 1;k = 5; %15n = 7; %31
elsek = 15; %15n = 31; %31
endStep = 10;%仿真时间间隔
Simu_Len = 1000*k; %仿真的时间长度
Simu_time = 500;
Pf = 1e-3 : (10e-3-1e-3)/Step : 10e-3-(10e-3-1e-3)/Step; %信道差错概率
Simu_speed = 3*10^10/Step : 3*10^Step/10 : 3*10^10;
msg = (double(rand(1,Simu_Len)>0.5))';
Rs_Encoder = fec.rsenc(n,k);
Rs_Decoder = fec.rsdec(Rs_Encoder);%% 主体代码
for i = 1:length(Pf)Err = zeros(1,Simu_time);for j = 1:Simu_timeij%编码Msg_Enc = encode(Rs_Encoder,msg);Msg_Enc2 = Msg_Enc;%将数据通过信道idx = round(length(Msg_Enc)*Pf(i));idx2 = round(length(Msg_Enc)*rand(1,idx));idx2(find(idx2 == 0)) = 1;Msg_Enc2(idx2) = floor(rand(1,1)*Msg_Enc(idx2));%设置出错值%译码[Msg_Dec,cnumerr,ccode] = decode(Rs_Decoder,Msg_Enc2);%计算误码率Err(j) = biterr(Msg_Dec,msg); endErr2(i) = sum(Err)/(Simu_time*Simu_Len);end%% 曲线仿真
figure;
plot(Pf,Err2,'b-*');
xlabel('channel error rate');
ylabel('BER');%% 3D图
figure;
[X,Y] = meshgrid(Simu_speed,Pf);
Error = [Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' ];
mesh(X,Y,Error);
xlabel('信道差错概率');
ylabel('仿真速度');
zlabel('误码率');if sel == 1;save RS5_7.mat X Y Error Pf Err2
elsesave RS15_31.mat X Y Error Pf Err2
end
clc;
clear;
close all;
warning off;%% 参数初始化
sel = 0;if sel == 1;k = 4; %15n = 7; %31
elsek = 11; %15n = 15; %31
endStep = 10;%仿真时间间隔
Simu_Len = 100*k; %仿真的时间长度
Simu_time = 500;
Pf = 1e-3 : (10e-3-1e-3)/Step : 10e-3-(10e-3-1e-3)/Step; %信道差错概率
Simu_speed = 3*10^10/Step : 3*10^Step/10 : 3*10^10;
% msg = (double(rand(1,Simu_Len)>0.5))';
msg = randint(Simu_Len,1,[0,2^k-1]);
%% 主体代码
for i = 1:length(Pf)Err = zeros(1,Simu_time);for j = 1:Simu_timeij%编码Msg_Enc = encode(msg,n,k,'hamming/decimal');Msg_Enc2 = Msg_Enc;%将数据通过信道idx = round(length(Msg_Enc)*Pf(i));idx2 = round(length(Msg_Enc)*rand(1,idx));idx2(find(idx2 == 0)) = 1;Msg_Enc2(idx2) = floor(rand(1,1)*Msg_Enc(idx2));%设置出错值%译码Msg_Dec = decode(Msg_Enc2,n,k,'hamming/decimal');%计算误码率Err(j) = biterr(Msg_Dec,msg); endErr2(i) = sum(Err)/(Simu_time*Simu_Len);end%% 曲线仿真
figure;
plot(Pf,Err2,'b-*');
xlabel('channel error rate');
ylabel('BER');%% 3D图
figure;
[X,Y] = meshgrid(Simu_speed,Pf);
Error = [Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' ];
mesh(X,Y,Error);
xlabel('信道差错概率');
ylabel('仿真速度');
zlabel('误码率');if sel == 1;save hmm5_7.mat X Y Error Pf Err2
elsesave hmm15_31.mat X Y Error Pf Err2
end
3.仿真分析
汉明编码:
仿真结果如下所示:
汉明编码的误码率和信道误码率呈线性变化,上图中蓝色部分是由于仿真点数少,所以其误码率略有抖动,当仿真点数时间长的时候,其仿真波形可线性变化。
RS编码:
仿真结果如下所示:
由于RS编码的特点就是针对突发错误,所以在RS编码的时候,对于性能较好的RS3115编码效果较好,其误码率曲线的值为0,而RS75,其纠错能力较差,所以上面的仿真结果中红色部分仿真结果为零。
卷积编码:
仿真结果如下所示:
由于卷积编码的性能并不是针对突发中断,所以卷积编码在效果较好的情况下,仍然存在一定的误码率。
5.参考文献
[1]陈卉卉. 卫星光通信信道编码技术研究[D]. 哈尔滨工业大学, 2009.A14-09
【传统编码技术对比】汉明码,RS,卷积码三种编码技术的对比相关推荐
- 结构光、双目、ToF——三种3D技术对比
本文虽然命名为对比文档,但是对比意义不是特别强烈的内容仍不在少数--如三种3D技术的误差等部分--换言之,本文旨在通过对比的形式对三种3D技术的特点和特性进行总结.资料主要来自于网络,部分相关参考文献 ...
- iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现
1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的"并发"技术,使得程序员可以不再去关心 ...
- NLP的介绍和如何利用机器学习进行NLP以及三种NLP技术的详细介绍
文章目录 什么是NLP? 为什么要学习NLP? 深度学习 技术1:文本嵌入(Text Embeddings) 技术2:机器翻译 技术3:会话 易水寒 发表于 2018-06-10 10:26:10 本 ...
- matlab提取电压基波分量,有源电力滤波器三种基波提取方法的对比分析
随着现代电力电子技术的飞速发展,电网中增加了大量的非线性负载,如大容量变流设备.变频设备.开关电源等的广泛应用,导致大量谐波的产生,这些谐波使电网电压和电流波形发生畸变,使得电能质量日益下降. 有源电 ...
- Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?(好)
修改 Windows 记事本的 ANSI.Unicode.UTF-8 这三种编码模式有什么区别?修改 Windows 的记事本默认存储文本文档编码是 ANSI,想问一下为了最大跨平台兼容性,应该采用哪 ...
- RDMA技术详解——原理和三种实现方式
RDMA作为一种host-offload, host-bypass技术,使低延迟.高带宽的直接的内存到内存的数据通信成为了可能.目前支持RDMA的网络协议有: 1.InfiniBand(IB): 从一 ...
- ETL常用的三种工具介绍及对比 Datastage,Informatica 和 Kettle
大家好,我是梦想家 Alex ~ ETL是数据仓库中的非常重要的一环,是承前启后的必要的一步.ETL负责将分布的.异构数据源中的数据如关系数据.平面数据文件等抽取到临时中间层后进行清洗.转换.集成,最 ...
- php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析
PHP遍历数组的三种方法及效率对比分析 发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...
- Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?
先来解释一下这三种编码的历史吧: ANSI:最早的时候计算机ASCII码只能表示256个符号(含控制符号),这个字符集表示英文字母足够,其中,我们键盘上可见的符号的编码范围是从32到126(大小写英文 ...
- ZigBee网络数据传递流程_蓝牙、Wifi与ZigBee三种,这三种无线传输技术,谁能一统天下...
智能产品种类越来越多,运用在智能家居上的技术也越来越成熟.然而在无线通信协议上却一直无法做到统一,从目前的情况来看,短期内是无法实现这一愿望的了.既然如此,我们何不另辟蹊径,在这些标准中,选择优势最大 ...
最新文章
- 高性能mysql的事物隔离级别
- Windows Phone 7 不温不火学习之《画图》
- 把HTML转成PDF的4个方案及实现方法
- 第五十二期:甲骨文遭遇“中年危机”:继阿里后,再被亚马逊永久抛弃
- python3 虚拟环境 pip 版本_【python知识】 - Python3之PIPENV虚拟环境及封装
- 数据库事物隔离级别用到的锁再次理解
- 笨办法学 Python · 续 练习 45:创建 ORM
- 程序员必备英语单词册
- poj2991 Crane
- 拓端tecdat|基于模型的聚类和R语言中的高斯混合模型
- kubernetes视频教程笔记 (15)-RC、RS和Deployment的关联
- Python菜鸟快乐游戏编程_pygame
- 对百度输入法小米版的用户体验
- Android 特效直播实现原理解析
- matlab中停止调试快捷键,matlab停止运行快捷键
- 计算机音乐咱们结婚吧音乐谱,齐晨咱们结婚吧简谱_咱们结婚吧歌词
- ios应用中调用系统电话、浏览器、地图、邮件等 以及打开其他应用(如qq,msn)
- 计算机ppt放映方式怎么改,ppt打开方式设置怎么设置
- 什么是GPIO?(详细介绍)
- python画图颜色代码rgb_如何获取matplotlib颜色方案的RGB值?
热门文章
- 玩转3D全息图像!AI即刻生成
- linux专业的打谱软件下载,MuseScore 3.1 发布,音乐制谱软件
- 从我国第一例计算机病毒是小球病毒,传入我国的第一例计算机病毒是
- 项目管理:系统需求分析模板
- STM32F103RCT6移植到STM32F103C8T6注意事项
- JS高级程序设计——阅读笔记六
- 2020MathorCup数学建模比赛A题D题思路
- 如何用c语言批量替换字符串,[C/C++]急速批量替换字符串
- 医疗管理系统HIS源码
- 【干货】最新app源码下载:200款优秀Android项目源码