当前位置: 首页 > news >正文

matlab仿真 信道编码和交织(上)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真   刘学勇编著第八章内容,有兴趣的读者请阅读原书) 

​ 

​ 

clear all
N=10;%信息比特的行数
n=7;%hamming码组长度n=2^m-1
m=3;%监督位长度
[H,G]=hammgen(m);%产生(n,n-m)hamming码的效验矩阵和生成矩阵
x=randi([0 1],N,n-m);%产生比特数据
y=mod(x*G,2);%hamming编码
y1=mod(y+randerr(N,n),2);%在每个编码码组中引入一个随机比特错误
mat1=eye(n);%生成n*n的单位矩阵,其中每一行的1代表错误比特位置
errvec=mat1*H.';%校验结果对应的所有错误矢量
y2=mod(y1*H.',2);%译码
%根据译码结果对应的错误矢量找出错误比特的位置,并纠错
for indx=1:Nfor indx1=1:nif(y2(indx,:)==errvec(indx1,:))y1(indx,:)=mod(y1(indx,:)+mat1(indx1,:),2);endend
end
x_dec=y1(:,m+1:end);%恢复原始信息比特
s=find(x~=x_dec)%纠错后的信息比特与原始信息比特对比

   首先,(7,4)汉明码是指7个码元中携带了4个有效信息,还有三个是冗余位,是用奇偶校验留下来的检错信息。

先从最简单的情况开始,假设我们需要传递的信息为[0 1 0 1],

以偶校验的1,3,4位为例,这三位的数据分别为0 0 1,为了确保加上校验位后有偶数个1,所以校验位为1,后面的1 2 3位,2 3 4位同理。

有了这三个校验位,当四个信息位出现错误的时候,我们可以根据校验位判断错误在什么地方。

可以看到,1,3,4位和1,2,3位中的交集有错,而2,3,4位没错,所以错误只可能出现在1号位

这里我们利用三个校验位的情况,成功的锁定了错误码元的所在位置。

(这里没有讨论出现偶数个码元错误的情况,和校验位错误的情况)

现在回到代码

x是我们产生的数据,其中的每一行可以称其为一组,一组有4个信息码元。

y是编码后的结果,我们一行一行看,绿色区域是每一组的校验位,红色区域是每一组的信息位(红色就是x)

​ 

y=mod(x*G,2);

 这里的代码意思是x*G得到的矩阵每个元素对2取余,其实就是异或,也就是我们之前在进行校验位的计算时使用的方式

G就是生成矩阵,把之前的我们从4个信息位编码成7个码元的过程用矩阵乘法进行表示

红色部分就是单位矩阵,用来将信息部分原封不动的传进

黄色部分就是产生校验位的部分,信息码元与它进行矩阵乘法再异或后就能得到上述的校验位。

这样就解释了为什么x*G再取异或后就能实现编码过程。

接下来来看解码过程,解码需要用到校验矩阵H

y2=mod(y1*H.',2);%译码

 可以发现,由于在编码过程中的设计,在乘上H’之后,如果没有错误的情况下,得到的矩阵中元素全都为0

现在我们假设信息码元中出现了一位错误。在解码之后得到的矩阵元素不全为0,证明有错误,我们需要用我们得到的 [0 ,1,1]找到错误出现的位置

总结:译码的结果并不是原始数据,而是表示错误情况的向量(矩阵)(y2),如果矩阵(y2)全为0 ,证明没有错误,如果不全为0,证明有错误,我们通过逐行比较译码结果(y2)和所有的错误情况(errvec),观察每一行的译码结果与哪一行的errvec相同,得到的errvec的行数,就是y1中出现错误的位数

现在也可以解释为什么说errvec是校验结果对应的所有错误矢量,因为errvec包含了所有含有非0元素(错误的)情况,比对就能得到错误位数

如果译码得到的是0 0 0,自然在errvec中没有对应的情况,也表示y1这一行没有错误,不需要修改。

clear all
N=1000000; %信息比特长度
M=4;%QPSK调制
n=7;%汉明码编码码组长度
m=3;%汉明吗监督位长度
graycode=[0 1 3 2];msg=randi([0 1],N,n-m);%信息比特
msg1=reshape(msg.',log2(M),N*(n-m)/log2(M)).';
msg1_de=bi2de(msg1,'left-msb');%信息比特转化为10进制(1)
msg1=graycode(msg1_de+1);%格雷编码
msg1=pskmod(msg1,M);%qpsk调制
Eb1=norm(msg1).^2/(N*(n-m));%计算比特能量
msg2=encode(msg,n,n-m);%汉明编码(2)
msg2=reshape(msg2.',log2(M),N*n/log2(M)).';
msg2=bi2de(msg2,'left-msb');
msg2=graycode(msg2+1);%汉明编码后的比特序列转化为十进制形式
msg2=pskmod(msg2,M);%汉明码数据进行qpsk调制
Eb2=norm(msg2).^2/(N*(n-m));%计算比特能量
EbNo=0:10;%信噪比
EbNo_lin=10.^(EbNo/10);%信噪比的线性值
for indx=1:length(EbNo_lin)sigma1=sqrt(Eb1/(2*EbNo_lin(indx)));%未编码的噪声标准差rx1=msg1+sigma1*(randn(1,length(msg1))+j*randn(1,length(msg1)));%加入高斯白噪声y1=pskdemod(rx1,M);%未编码QPSK解调y1_de=graycode(y1+1);%未编码的格雷逆映射[err ber1(indx)]=biterr(msg1_de.',y1_de,log2(M));%未编码的误比特率sigma2=sqrt(Eb2/(2*EbNo_lin(indx)));%编码的噪声标准差rx2=msg2+sigma2*(randn(1,length(msg2))+j*randn(1,length(msg2)));%加入高斯白噪声y2=pskdemod(rx2,M);%编码qpsk解调y2=graycode(y2+1);%编码格雷逆映射y2=de2bi(y2,'left-msb');%转换为二进制形式y2=reshape(y2.',n,N).';y2=decode(y2,n,n-m);%译码[err ber2(indx)]=biterr(msg,y2);%编码的误比特率endsemilogy(EbNo,ber1,'-ko',EbNo,ber2,'-k*');legend('未编码','Hamming(7,4)编码')title('未编码和hamming(7,4)编码的QPSK在AWGN下的性能')xlabel('Eb/N0');ylabel('误比特率')

 (1):这里的转化为10进制是为了将二进制的信号转化为0-3的4进制情况,这样就可以进行格雷编码,进而qpsk调制

(2) encode和decode编译码本质上就是例8.1中的过程,这里使用现成的函数可以直接实现编译码

相关文章:

matlab仿真 信道编码和交织(上)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第八章内容,有兴趣的读者请阅读原书) ​​​ ​ ​ ​ clear all N10;%信息比特的行数 n7;%hamming码组长度n2^m-1 m3;%监督位长度 [H,G]hammgen(m);%产生(n,n-…...

基于YOLOv8的高压输电线路异物检测系统

基于YOLOv8的高压输电线路异物检测系统 (价格88) 包含 【“鸟窝”,“风筝”,“气球”,“垃圾”】 4个类 通过PYQT构建UI界面,包含图片检测,视频检测,摄像头实时检测。 (该系统可以根据数…...

23款奔驰GLS450加装原厂电吸门配置,提升车辆舒适性和便利性

今天是一台22款奔驰GLS450,车主是佛山的 以前被不良商家坑了 装了副厂的电吸门 刚开始就很正常 用了半年之后 就开始开不了门,被锁在里面,刚开始车主以为是零件坏了 后来越来越频繁,本来是为了家里老人小孩关门方便而升级的&#…...

git操作流程笔记

1、在本地项目文件夹右击鼠标点击Git Bash Here 2、输入git init,这个目录变成git可以管理的仓库,会出现一个.git文件夹,如果没出现的话需要选择“显示隐藏文件”(不会的同学自行百度一下) 3、绑定本地仓库与远程仓库…...

【QT】常用控件-上

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 目录 👉🏻QWidgetenabledgeometryrect制作上下左右按钮 window frame 的影响window titlewindowIcon代码示例: 通过 qrc 管理图片作为图标 windowOpacitycursor使用qrc自…...

帮助网站提升用户参与度的5个WordPress插件

仅靠编写精彩的内容、设计精美的图像和创建简化的客户旅程不足以提高网站参与度。您需要让用户在首次访问后继续与您的网站互动并成为回访者,才能真正吸引您所追求的兴趣。 幸运的是,对于 WordPress 用户来说,有数百种工具可用于提高用户参与…...

理解 Python 中的 @wraps:保留函数元数据

一.介绍 在本文中,我们将了解 wraps。在 Python 中使用装饰器时,您可能会遇到原始函数的元数据丢失的情况。这时,functools 模块中的 wraps 装饰器就可以派上用场了。让我们深入了解 wraps 的作用及其重要性。 二.简单装饰器的问题 首先&a…...

cjson

文章目录 概述编译cjson_test 小结 概述 在网络传输中,网络数据序列化,常用的有那么几种,json,protobuf都是很常用的,这一篇来写下json。 Json常用的有几个,rapidjson,jsoncpp,还有…...

Docker data root 目录更改

有时候受限于系统根目录空间的限制,需要将 docker data root 目录更改为其它目录,如单独挂载一个磁盘或存储。本篇文章介绍如何操作。 修改docker 工作目录 修改配置文件/etc/docker/daemon.json(在19.x 版本之前使用grapth) {&q…...

[CR]厚云填补_SEGDNet

Structure-transferring edge-enhanced grid dehazing network Abstract 在过去的二十年里,图像去雾问题在计算机视觉界受到了极大的关注。在雾霾条件下,由于空气中水汽和粉尘颗粒的散射,图像的清晰度严重降低,使得许多计算机视觉…...

图-基础概念

是什么 图是一种抽象的数据类型,在图中的数据元素通常称作节点,V是所以定点的集合,E是所有边的集合 图的分类 有向图 如果两个订单v,w,只能由v向w,而不能w向v,那么我们就把何种情况叫做一个从…...

Javascript前端基础面试(十)

MVVM Vue MVVM这一篇就够啦&#xff01;_vue r mvvm-CSDN博客 点容器内的图标,图标边框变成border 1px solid red&#xff0c;点空白处重置 <div id"container"> <img src"icon.png" alt"Icon" class"icon"> <!…...

书生大模型实战营闯关记录----第五关:LlamaIndex+Internlm2 RAG实践Demo:效果对比,文档加载,向量库构建,检索器,模型推理

文章目录 1. 前置知识RAG背景RAG 效果比对 2. 环境、模型准备2.1 配置基础环境2.2 安装 Python环境和依赖包2.3 下载 Sentence Transformer 模型2.4 下载 NLTK 相关资源 3. LlamaIndex HuggingFaceLLM4. LlamaIndex RAG加载文档构建向量存储索引库检索器RAG代码 5. LlamaIndex …...

如何使用极狐GitLab CI/CD Component Catalog?【上】

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…...

详解Xilinx FPGA高速串行收发器GTX/GTP(3)--GTX的时钟架构

目录 1、参考时钟 2、时钟方案 2.1、单个外部参考时钟驱动单个QUAD中的多个transceiver 2.2、单个外部参考时钟驱动多个QUAD中的多个transceiver 2.3、同一个Quad中,多个GTX Transceiver使用多个参考时钟 2.4、不同Quad中,多个GTX Transceiver 使用多个参考时钟 3、QP…...

简单搭建dns服务器

目录 一.安装服务 二.编写子配置文件 三.编写主配置文件 四.编写文件 五.重启服务测试 配置端&#xff1a;IP地址为172.25.254.100、主机名为node1.rhel9.org 测试端&#xff1a;IP地址为172.25.254.101、主机名为node2.rhel9.org 一.安装服务 [rootnode1 ~]# dnf inst…...

大数据进阶(Advanced Big Data)

大数据进阶&#xff08;Advanced Big Data&#xff09; 目录 引言大数据架构 Lambda架构Kappa架构 大数据技术栈 数据采集与预处理数据存储与管理数据处理与分析数据可视化与展示 大数据分析方法 机器学习深度学习自然语言处理图数据分析 大数据在工业中的应用 制造业能源管理…...

微信小程序开发优惠券制作源码

微信小程序开发优惠券制作源码。制作一个自带流量的小程序商城,功能强大玩法新,轻松实现引流,推广,卖货,分销,会员管理,直播等多种功能需求需要哪些编辑代码源码呢?http://m.bokequ.com/list/124-2.html 代码分享 <!DOCTYPE HTML> <html xmlns"http://www.w3.o…...

mongodb的安装操作记录

mongodb的安装操作记录 1 上传软件包&#xff0c;并解压 [rootmonitor local]# tar -xvf mongodb-linux-x86_64-rhel70-7.0.12.tgz mongodb-linux-x86_64-rhel70-7.0.12/LICENSE-Community.txt mongodb-linux-x86_64-rhel70-7.0.12/MPL-2 mongodb-linux-x86_64-rhel70-7.0.1…...

C++客户端Qt开发——多线程编程(二)

多线程编程&#xff08;二&#xff09; ③线程池 Qt中线程池的使用 | 爱编程的大丙 1>线程池 我们使用线程的时候就去创建一个线程&#xff0c;这样实现起来非常简便&#xff0c;但是就会有一个问题&#xff1a;如果并发的线程数量很多&#xff0c;并且每个线程都是执行…...

深度解析AdvancedSessionsPlugin:构建高性能多人游戏的会话管理解决方案

深度解析AdvancedSessionsPlugin&#xff1a;构建高性能多人游戏的会话管理解决方案 【免费下载链接】AdvancedSessionsPlugin Advanced Sessions Plugin for UE4 项目地址: https://gitcode.com/gh_mirrors/ad/AdvancedSessionsPlugin AdvancedSessionsPlugin是专为虚幻…...

Mac Mouse Fix技术架构深度解析:如何通过系统级事件拦截实现鼠标功能增强

Mac Mouse Fix技术架构深度解析&#xff1a;如何通过系统级事件拦截实现鼠标功能增强 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 在macOS生…...

taotoken的tokenplan套餐让我们的月度ai支出下降了

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 taotoken的tokenplan套餐让我们的月度ai支出下降了 1. 从按需付费到订阅套餐的转变 作为一个小型开发团队&#xff0c;我们日常需…...

打造专属AI工作空间:Chatbox主题个性化完全指南

打造专属AI工作空间&#xff1a;Chatbox主题个性化完全指南 【免费下载链接】chatbox Powerful AI Client 项目地址: https://gitcode.com/GitHub_Trending/ch/chatbox 你是否厌倦了千篇一律的AI对话界面&#xff1f;想要一个既美观又高效的AI助手工作环境&#xff1f;本…...

记忆学习导向的高速运动感知图像的去模糊及目标识别【附数据】

✨ 长期致力于深度卷积网络、长短期记忆网络、相机高速运动感知、运动去模糊、运动目标识别研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;融合DCNN与…...

Zotero PDF Translate:打破语言壁垒,让外文文献阅读变得前所未有的简单

Zotero PDF Translate&#xff1a;打破语言壁垒&#xff0c;让外文文献阅读变得前所未有的简单 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: http…...

范畴论与拓扑数据分析:统一聚类算法与捕捉数据形状的新范式

1. 项目概述&#xff1a;当聚类算法遇见范畴论与拓扑如果你在数据科学或机器学习领域摸爬滚打了一段时间&#xff0c;大概率对K-Means、DBSCAN、层次聚类这些名字已经烂熟于心。我们习惯于将它们视为一系列精妙的“算法黑箱”&#xff1a;输入数据点&#xff0c;调整几个超参数…...

抖音下载神器:3步搞定批量无水印下载,效率提升95%

抖音下载神器&#xff1a;3步搞定批量无水印下载&#xff0c;效率提升95% 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallbac…...

终极指南:如何用MAA明日方舟助手告别重复操作,轻松实现游戏自动化

终极指南&#xff1a;如何用MAA明日方舟助手告别重复操作&#xff0c;轻松实现游戏自动化 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. …...

智慧树刷课插件:3分钟搞定网课,解放你的宝贵时间![特殊字符]

智慧树刷课插件&#xff1a;3分钟搞定网课&#xff0c;解放你的宝贵时间&#xff01;&#x1f680; 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台的…...