我们分两个方面分析,一是信道编码原理,二是matlab仿真。

一、信源产生了什么?

信源的作用:将信息转换成电信号,数学上信源的输出是一个随时间变换的随机函数。

也就是说信源序列是一组随机序列数,可以用特定函数产生信源序列:

1、randi([a,b],m,n):产生一个m x n的均匀分布随机矩阵,元素的值属于[a,b]且取整数。

2、randn(m,n) > 0.5  函数产生m x n的正态分布的随机矩阵,元素值在[0,1]。通过判断,可以得到0/1的随机数

3、randsrc可以指定每一个符号的出现概率

(具体可见前文:matlab通信系统建模1.信源函数_marujie123的博客-CSDN博客)

eg.产生四路信源序列:

%% 四路信源产生序列
I = 4 %信源数量
m=zeros(4,100);%m是一个4行100列的矩阵
for i = 1:Im(i,:)=randi([0,1],1,100);%m的每一行都是一组长度为100的随机序列
end
%产生的信源序列长度为100

二、为什么要信源编码?

简而言之,就是信源产生的这些信源序列在传输时可能会出错,我们为了让它少出错并且出错了我们可以找到错误位置,我们就要信源编码,目的就是通过加冗杂来提高可靠性。

三、信源编码之——汉明码:

信道编码的方式我选择的是汉明码编码,选择构造一个(7,4)汉明码,即码长为7,信息位为4。

1、关于线性分组码:

汉明码是线性分组码的一种。利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。

2、本次实验汉明码编码信息

校验位与信息位的关系:

code(5)=code(1)^code(2)^code(3)

code(6)=code(1)^code(2)^code(4)

code(7)=code(1)^code(3)^code(4)

code(1,2,3,4)是信息位,code(5,6,7)是校验位。

由此可以得到监督关系:[1 1 1; 1 1 0;1 0 1;0 1 1]

并得到生成矩阵G,如下所示:

%% 四路信源产生序列
I = 4 %信源数量
m=zeros(4,100);%m是一个4行100列的矩阵
for i = 1:Im(i,:)=randi([0,1],1,100);%m的每一行都是一组长度为100的随机序列
end
%产生的信源序列长度为100%% 信道编码
%使用MATLAB实现(7,4)汉明码编码
n=7;%码长
k=4;%信息位长
A=[1 1 1; 1 1 0;1 0 1;0 1 1];
%A代表了监督关系,监督关系是
%code(5)=code(1)^code(2)^code(3)
%code(6)=code(1)^code(2)^code(4)
%code(7)=code(1)^code(3)^code(4)
G=[eye(k) A];%生成矩阵
H=[A'  eye(n-k) ];%校验矩阵
%编码
code = zeros(4,175); %对于编码后序列进行定义
A=[0 0 0 0];
for i = 1:4for j = 1:4:100A=[m(i,j),m(i,j+1),m(i,j+2),m(i,j+3)];%将每路信源序列分成四个一组,作为信息位。A=mod(A*G , 2); %进行编码,四位的信息位变成七位的汉明码序列。for z = 1:7:175code(i,z)   = A(1);%对编码后的汉明码序列赋值给codecode(i,z+1) = A(2);code(i,z+2) = A(3);code(i,z+3) = A(4);code(i,z+4) = A(5);code(i,z+5) = A(6);code(i,z+6) = A(7);endend
end

这里写的四路信源序列编码,是大作业的其中一部分,不能通过改变I来对其他通路数的信源序列编码,具体比如6路通路,可以根据代码具体修改。

下面:是正常的一个信源序列的信道编码:

信源序列长100,经过(7,4)汉明编码后,长175.

clc;
clear;
%% 信源产生序列
m=randi([0,1],1,100);%m的每一行都是一组长度为100的随机序列
%% 信道编码
%使用MATLAB实现(7,4)汉明码编码
n=7;%码长
k=4;%信息位长
A=[1 1 1; 1 1 0;1 0 1;0 1 1];
%A代表了监督关系,监督关系是
%code(5)=code(1)^code(2)^code(3)
%code(6)=code(1)^code(2)^code(4)
%code(7)=code(1)^code(3)^code(4)
G=[eye(k) A];%生成矩阵
H=[A'  eye(n-k) ];%校验矩阵
%编码
A=[0 0 0 0];for i = 1:4:100A=[m(1,i),m(1,i+1),m(1,i+2),m(1,i+3)];%将每路信源序列分成四个一组,作为信息位。A=mod(A*G , 2); %进行编码,四位的信息位变成七位的汉明码序列。for j = 1:7:175for k = 1:7code(1,j+k-1) = A(k);%对编码后的汉明码序列赋值给codeendendend

基于matlab的多路信道编码——汉明码相关推荐

  1. 码分复用的matlab仿真,基于matlab的多路时分复用仿真.doc

    基于matlab的多路时分复用仿真 通信系统原理综设实验报告 多路时分复用matlab仿真系统 教师评语: 引言 在实际的通信系统中,为了扩大通信链路的容量,提高通信系统的利用率,需要在一条链路上传输 ...

  2. 基于matlab的时分复用实现,基于matlab的多路时分复用仿真.doc

    基于matlab的多路时分复用仿真.doc 通信系统原理综设实验报告多路时分复用matlab仿真系统教师评语:1.引言在实际的通信系统中,为了扩大通信链路的容量,提高通信系统的利用率,需要在一条链路上 ...

  3. 基于matlab的多路BPSK调制—为什么采样率=码元速率x一个码元周期内对码元的采样点数

    一.为什么"fs = Rb x N" 其中, Rb(码元速率).fs(采样率).N(一个码元周期内对码元的采样点数) 先说结论,因为调制时,信源序列与调制信号(正弦信号)的点数必须 ...

  4. matlab时分复用,基于matlab的多路时分复用仿真.docx

    通信系统原理综设实验报告 多路时分复用matlab仿真系统 教师评语: 亠.引言 在实际的通信系统中,为了扩大通信链路的容量,提高通信系统的利用率, 需要在一条链路上传输多路独立的信号,即实现多路通信 ...

  5. 基于matlab的信道编码仿真,基于matlab的信道编码仿真(可编辑).doc

    基于matlab的信道编码仿真(可编辑).doc 基于matlab的信道编码仿真 Abstract With the rapid development of communication techno ...

  6. (7,4)汉明码编码译码及计算最小码距——基于MATLAB编程

    (7,4)汉明码编码译码及计算最小码距--基于MATLAB编程 编码 A=[1 1 1 0; 0 1 1 1; 1 1 0 1] %A 可随便写四个不为0的列向量,是为了生成一致校验矩阵 H=[A e ...

  7. 【通信系统仿真系列】基于Matlab的汉明码(Hamming Code)纠错传输以及交织编码(Interleaved coding)仿真

    基于Matlab的汉明码纠错传输以及交织编码仿真 前言 原理 汉明码 编码过程 冗余位数量计算 校验位位置计算 计算校验相关位 开始编码 解码过程 实验结果 仿真代码 可以修改的参数 下载链接 主函数 ...

  8. 基于Matlab的LDPC码性能研究毕业设计(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 本科毕业设计(论文) 题 目    LDPC码性能研究 摘 要     信道编码是数字通信系统的 ...

  9. 基于MATLAB的OFDM系统实现

    基于MATLAB的OFDM系统实现 OFDM(正交频分复用)的基本原理是将高速的数据流通过串并转换分解成若干低速的数据流,利用多个正交的子载波并行传输.本文借鉴了IEEE802.11a标准并进行简化, ...

最新文章

  1. 51CTO独家调查:谁是十年最具影响力厂商
  2. 程序员面试题精选100题(36)-在字符串中删除特定的字符[算法]
  3. 获取rabbitmq连接对象_RabbitMQ——简单队列
  4. 关于armv7指令集的一个直观数据
  5. iOS之深入解析渲染的底层原理
  6. java 数字图片识别_java – 识别图像中的数字
  7. SpringMVC与Struts2区别与比较总结
  8. “出道” 5 年采用率达 78%,Kubernetes 的成功秘诀是什么?
  9. python多个判断条件体重_python基础之如何用if语句判断多个条件?
  10. (转)Managed DirectX +C# 开发(入门篇)(四)
  11. JSP 的“4379”
  12. 得力计算机dl1526第15个音乐,得力dl1526乐谱 | 手游网游页游攻略大全
  13. 【干货满满】初级银行从业考试《个人理财》重点梳理
  14. Linux的ssh登录命令,linux之ssh命令详解
  15. 转:visio 2013 激活软件 -- 记录
  16. 张正友相机标定法原理与实现
  17. 了解React Native组件,模板和工具
  18. SND: 项目发布时Owning ClassInfo is null for property: private问题原因排查与解决
  19. spring的 init-method和 destory-method方法
  20. 09-slash_backslash

热门文章

  1. (广告颀赏)LG谜手机广告---黛丽·赫本之蒂凡尼早餐篇
  2. 手机鸿蒙系统APP,手机鸿蒙操作系统
  3. 大数据产品---BI类产品测试总结
  4. 什么是死锁?死锁产生的原因?如何避免死锁?
  5. java for循环map赋值_Java for循环Map集合优化实现解析
  6. 简单秒杀功能实现思路
  7. openocd目录_openocd安装与调试
  8. python实现SHA256
  9. QT中QString 和 LPCWSTR 的相互转换
  10. 在OLED上显示各种各样的数据(文字、字母、图片)