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,卷积码三种编码技术的对比相关推荐

  1. 结构光、双目、ToF——三种3D技术对比

    本文虽然命名为对比文档,但是对比意义不是特别强烈的内容仍不在少数--如三种3D技术的误差等部分--换言之,本文旨在通过对比的形式对三种3D技术的特点和特性进行总结.资料主要来自于网络,部分相关参考文献 ...

  2. iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现

    1.iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的"并发"技术,使得程序员可以不再去关心 ...

  3. NLP的介绍和如何利用机器学习进行NLP以及三种NLP技术的详细介绍

    文章目录 什么是NLP? 为什么要学习NLP? 深度学习 技术1:文本嵌入(Text Embeddings) 技术2:机器翻译 技术3:会话 易水寒 发表于 2018-06-10 10:26:10 本 ...

  4. matlab提取电压基波分量,有源电力滤波器三种基波提取方法的对比分析

    随着现代电力电子技术的飞速发展,电网中增加了大量的非线性负载,如大容量变流设备.变频设备.开关电源等的广泛应用,导致大量谐波的产生,这些谐波使电网电压和电流波形发生畸变,使得电能质量日益下降. 有源电 ...

  5. Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?(好)

    修改 Windows 记事本的 ANSI.Unicode.UTF-8 这三种编码模式有什么区别?修改 Windows 的记事本默认存储文本文档编码是 ANSI,想问一下为了最大跨平台兼容性,应该采用哪 ...

  6. RDMA技术详解——原理和三种实现方式

    RDMA作为一种host-offload, host-bypass技术,使低延迟.高带宽的直接的内存到内存的数据通信成为了可能.目前支持RDMA的网络协议有: 1.InfiniBand(IB): 从一 ...

  7. ETL常用的三种工具介绍及对比 Datastage,Informatica 和 Kettle

    大家好,我是梦想家 Alex ~ ETL是数据仓库中的非常重要的一环,是承前启后的必要的一步.ETL负责将分布的.异构数据源中的数据如关系数据.平面数据文件等抽取到临时中间层后进行清洗.转换.集成,最 ...

  8. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析

    PHP遍历数组的三种方法及效率对比分析 发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  9. Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?

    先来解释一下这三种编码的历史吧: ANSI:最早的时候计算机ASCII码只能表示256个符号(含控制符号),这个字符集表示英文字母足够,其中,我们键盘上可见的符号的编码范围是从32到126(大小写英文 ...

  10. ZigBee网络数据传递流程_蓝牙、Wifi与ZigBee三种,这三种无线传输技术,谁能一统天下...

    智能产品种类越来越多,运用在智能家居上的技术也越来越成熟.然而在无线通信协议上却一直无法做到统一,从目前的情况来看,短期内是无法实现这一愿望的了.既然如此,我们何不另辟蹊径,在这些标准中,选择优势最大 ...

最新文章

  1. 高性能mysql的事物隔离级别
  2. Windows Phone 7 不温不火学习之《画图》
  3. 把HTML转成PDF的4个方案及实现方法
  4. 第五十二期:甲骨文遭遇“中年危机”:继阿里后,再被亚马逊永久抛弃
  5. python3 虚拟环境 pip 版本_【python知识】 - Python3之PIPENV虚拟环境及封装
  6. 数据库事物隔离级别用到的锁再次理解
  7. 笨办法学 Python · 续 练习 45:创建 ORM
  8. 程序员必备英语单词册
  9. poj2991 Crane
  10. 拓端tecdat|基于模型的聚类和R语言中的高斯混合模型
  11. kubernetes视频教程笔记 (15)-RC、RS和Deployment的关联
  12. Python菜鸟快乐游戏编程_pygame
  13. 对百度输入法小米版的用户体验
  14. Android 特效直播实现原理解析
  15. matlab中停止调试快捷键,matlab停止运行快捷键
  16. 计算机音乐咱们结婚吧音乐谱,齐晨咱们结婚吧简谱_咱们结婚吧歌词
  17. ios应用中调用系统电话、浏览器、地图、邮件等 以及打开其他应用(如qq,msn)
  18. 计算机ppt放映方式怎么改,ppt打开方式设置怎么设置
  19. 什么是GPIO?(详细介绍)
  20. python画图颜色代码rgb_如何获取matplotlib颜色方案的RGB值?

热门文章

  1. 玩转3D全息图像!AI即刻生成
  2. linux专业的打谱软件下载,MuseScore 3.1 发布,音乐制谱软件
  3. 从我国第一例计算机病毒是小球病毒,传入我国的第一例计算机病毒是
  4. 项目管理:系统需求分析模板
  5. STM32F103RCT6移植到STM32F103C8T6注意事项
  6. JS高级程序设计——阅读笔记六
  7. 2020MathorCup数学建模比赛A题D题思路
  8. 如何用c语言批量替换字符串,[C/C++]急速批量替换字符串
  9. 医疗管理系统HIS源码
  10. 【干货】最新app源码下载:200款优秀Android项目源码