m基于MIMO中继通信和非规则LDPC编译码的matlab仿真,其中波束形成为SVD,MMSE,中继包括AF,DF,CF

news2025/1/12 12:07:40

目录

1.算法概述

2.仿真效果预览

3.MATLAB部分代码预览

4.完整MATLAB程序


1.算法概述

       即在非规则LDPC下,且源节点1个,中继一个,目标节点一个,天线也是1的情况对比三种中继协作协议的误码率。   

       做非规则LDPC码的以编码协作形式中继协议,比较以下三种情况下误码率图和中断概率图:

源节点一个(配置一根天线),中继节点4个(每个节点配置一根天线),目的节点一个(节点配置一根天线)(1:4:1)

源节点2个,中继节点4个,目的节点1个(2:4:1)

源节点1个,中继节点4个,目的节点2个(1:4:2)

·141·241·142

 

2.仿真效果预览

matlab2022a仿真

·接收天线数量一定,噪比不变时性能随着发射天线数的增多而增大,但是提高的能力愈来愈慢。

 

 中继节点的波束成形算法分别使用SVD,MMSESVD-MMSE混合算法,将这三种算法应用到该系统中,比较它们的误码率。

3.MATLAB部分代码预览

%LDPC参数
N        = 2*data_Numbers;%设置奇偶校验矩阵大小     
M        = N*R;
max_iter = 100;                 %最大迭代次数

load H;%H=getH(M,N)
load G;%G=getG(M,N);

figure;
imshow(H,[]);title('奇偶校验均值H直观图');


for i=1:length(EbN0)

     N0            = 2*10^(-EbN0(i)/10);
     Bit_err(i)    = 0;
     Num_err       = 0;
     Numbers       = 0; %误码率累加器 

     Dsd=5;          %db数
     Dsr=4;
     Drd=1;
     Qsd=sqrt(10^(Dsd/10));
     Qsr=sqrt(10^(Dsr/10));
     Qrd=sqrt(10^(Drd/10)); 

     while Num_err <= Times
           Num_err
           fprintf('Eb/N0 = %f\n', EbN0(i));
           %产生需要发送的随机数
           Trans_data  = round(rand(1,N-M));
           %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
           %LDPC编码
           u  = mod(Trans_data*G,2); %LDPC编码
           %LDPC编码
           %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
           %BPSK
           Trans_BPSK  = 2*u-1;
           %---------------------协作MIMO----------------------------------
           %作为发送信源
           MIMO_Tx(1,:) = sqrt(Pt)*Trans_BPSK;
           %将源信号发送其他几个协作天线上,

           %MIMO信道,期间考虑到路径损耗问题。
           H_Ray = randn(Ra_num,Ta_num); 
           for r = 1:Ra_num
              for s = 1:Ta_num
                  H_Ray(s,r) = k2(1)*H_Ray(s,r);
              end
           end       
           x     = [];
           HH    = H_Ray; 
           r     = N0; 
           w     = inv(HH'*HH+(1/EbN0(i))*eye(Ta_num))*HH'; 
           y     = w*r; 
           xtemp = (y>=0)-(y<0)+0; 
           x     = [x,xtemp];   
           a     = (x+1)/2;            
           
           %进行AF中继
           %信道增益
           Hsd=Qsd*(randn);
           Hsr=Qsr*(randn);
           Hrd=Qrd*(randn);
           %协作节点的放大增益
           B=sqrt(1/(abs(Qsr)^2*1));
           %===============================
           %最大合并比加权因子计算(第i个支路的可变增益加权系数为该分集之路的信号幅度与噪声功率之比)
           %计算增益
           A0=conj(Hsd)/(1/EbN0(i));
           A1=B*conj(Hsr)*conj(Hrd)/((B^2*(abs(Hsr))^2+1)*(1/EbN0(i)));           
           %接收
           MIMO_Rx =  MIMO_Tx/max(max(MIMO_Tx))+ sqrt(N0/2)*randn(size(MIMO_Tx));
           Ysr      = Hsr*MIMO_Rx;
           Yrd      = Hrd*Ysr*B;
           Ysd      = Hsd*MIMO_Rx;
           Y        = A0*Ysd+A1*Yrd;   
           Y        = k3(1)*Y;       
           Ysum(1,:,:) = Y;
           Y2(:,:) = Ysum(1,:,:);
           
           %接收到的二进制信号
           MIMO_Rxs = a*Y2;
           MIMO_Rx2 = k3(1:Ta_num)*MIMO_Rxs(:,:);    
           Rec_data = sign(MIMO_Rx2); 
           %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
           %LDPC译码
           z_hat = func_Dec(Rec_data,N0,H,max_iter);
           x_hat = z_hat(size(G,2)+1-size(G,1):size(G,2));                     
           %LDPC译码
           %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%           
           if sum(Rec_data) == 0
              nberr = 0;
              disp('not count');
           else
              [nberr,rat]  = biterr(Trans_data,x_hat')
           end         

           Num_err     = Num_err+nberr;
           Numbers     = Numbers+1;    
    end 
      Bit_err(i)=Num_err/(N*Numbers);
end
01_038_m

4.完整MATLAB程序

matlab源码说明_我爱C编程的博客-CSDN博客

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

computed计算方法不被调用的原因;只有在使用时才会被调用

目录 一、问题 二、解决方法 三、总结 一、问题 1.需求&#xff1a;根据组件外部一个变量的值来确定 组件内部的操作。组件外部可以更改filetime的值&#xff0c;filetime有值时这个界面可以操作&#xff0c;否则不可以操作。 我一想 用computed就可以了呀&#xff0c;动态…

Rockwell EDI 850 采购订单报文详解

罗克韦尔&#xff08;Rockwell&#xff09;自动化(中国)有限公司(NYSE: ROK)是全球最大的致力于工业自动化与信息化的公司&#xff0c;致力于帮助客户提高生产力&#xff0c;以及世界可持续发展。罗克韦尔自动化总部位于美国威斯康星州密尔沃基市&#xff0c;在全球80多个国家设…

超级明星们的人物化身 NFT 将来到 The Sandbox 元宇宙

超级明星队 NFT 将在 The Sandbox 的全球运动村体验中亮相&#xff01; ​ The Sandbox 与 Web3 公司 Forj 达成合作&#xff0c;还获得了独特的 BAYC 无聊猿人物化身的授权。 NFTSTAR 在 The Sandbox 建造了新的体验&#xff0c;巴西足球明星内马尔&#xff08;Neymar JR.&am…

高项 质量管理论文

三个过程 项目质量管理包括执行组织确定质量政策、目标与职责的各过程和活动&#xff0c;从而使项目满足其预定的需求。项目质量管理在项目环境内使用政策和程序&#xff0c;实施组织的质量管理体系&#xff1b;并以执行组织的名义&#xff0c;适当支持持续的过程改进活动。项目…

【408专项篇】C语言笔记-第五章(一维数组与字符数组)

第五章&#xff1a;一维数组与字符数组 第一节&#xff1a;一维数组 1. 数组的定义 C语言提供的数组&#xff0c;通过一个符号来访问多个元素。 特点&#xff1a; 具有相同的数据类型。使用过程中需要保留原始数据。 数组是构造数据类型。所谓数组&#xff0c;是指一组具…

深入理解Python生成器和yield

深入理解Python生成器和yield 我在《Python性能优化指南–让你的Python代码快x3倍的秘诀》中有提到&#xff0c;在处理大文件或大数据集时用生成器可以提高性能。很多朋友会问&#xff1a;“为什么用生成器就能提升性能呢&#xff1f;”。今天&#xff0c;我就带大家深入看一…

Web2 vs. Web3,社交工具的发展会有什么变化?

社交&#xff0c;是不同主体传递、反馈社会信息的主要方式之一。从古代的飞鸽传书、近代的书信往来&#xff0c;到现代大家手机里都必不可少的社交 APP&#xff0c;人们对于社交的需求和实现方式都在不断更新和变化。 当前&#xff0c;Web2 社交赛道已经非常成熟。为吸引更多流…

前端文件流相关

XMLHttpRequest // XMLHttpRequest对象用于与服务器交互 // XMLHttpRequest可以在不刷新页面的情况下请求特定URL, 获取数据 // XMLHttpRequest属性responseType是一个枚举字符串值, 用于指定响应中包含的数据类型 // 如果将 responseType的值设置为空字符串, 则使用 text 作为…

Linux网络编程基础

Linux网络编程基础一、基础概念的介绍1.1 网卡的介绍1.2 mac地址 六个字节 48位1.3 ip地址 32位 四个字节 ipv41.4 端口二、网络模型2.1 OSI七层模型2.2 TCP/IP模型2.3 协议2.4 网络通信过程2.4 arp协议2.5 网络设计模式一、基础概念的介绍 1.1 网卡的介绍 1.2 mac地址 六个字…

开源轻量堡垒机——Teleport的安装配置和使用

一、堡垒机简介 1.1、现状 目前随着信息化的发展&#xff0c;越来越多的企业开始有更多的服务器、业务资源&#xff0c;有更多样化的员工&#xff0c;拥有更多的账号&#xff1b;导致访问混乱化&#xff0c;越权访问难以规范&#xff1b;甚至恶意命令攻击事件&#xff08;如删…

【数据结构】带头节点双向循环链表

目录 顺序表和链表的区别 带头双向循环链表分析 带头双向循环链表结构&#xff1a; 创建一个节点 哨兵位头节点 打印链表中的值 在pos前插入 删除pos位置的节点 尾插 尾删 头插&#xff1a; 头删 链表元素查找 总代码 List.h文件 List.c文件 test.c文件 顺序表和…

科技云报道:历经四年,RPA走向同质化?

科技云报道原创。 经过多年发展&#xff0c;全球RPA市场已经初具规模。 据Transparency Market Research研究预测&#xff0c;预计到2024年&#xff0c;全球RPA市场规模将达到50亿美元&#xff0c;实现61.3%的年复合增长率。 RPA在亚洲市场起步晚于欧美市场&#xff0c;但从2…

SpringCloud系列(二)Ribbon 负载均衡的原理及详细流程

关于负载均衡这个概念在上一篇文章中有所提到&#xff0c;在消费者远程调用之前有一个重要的环节就是负载均衡&#xff0c;那么为什么要进行负载均衡呢&#xff1f;其原理及实现流程如何&#xff1f;   其实 Ribbon 负载均衡可以认为是一种策略&#xff0c;也可以说是某种规则…

SpringBoot+Vue项目实现身体健康诊疗系统

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

ajax尚硅谷笔记——跨域请求、axios发送ajax请求、jquery发送ajax请求

去恶补了ajax知识 一、ajax简介 1、ajax全称为Asynchronous JavaScript And XML&#xff0c;就是异步的JS 和XML 2、通过AJAX可以再浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff1a;无刷新获取数据 3、ajax不是新的编程语言&#xff0c;而是一种将现有的标准…

《Linux内核设计与实现》读书笔记

《Linux内核设计与实现》读书笔记第三章 进程管理第四章 进程调度第五章 系统调用第六章 内核数据结构第七章 中断和中断处理第八章 下半部和推后执行的工作第九章 内核同步介绍第十章 内核同步方法第十一章 定时器和时间管理第十二章 内存管理第十三章 虚拟文件系统第十四章 块…

Java:2022年全球使用的15种最流行的Java应用

到今年为止&#xff0c;Java已经有25年的历史了&#xff0c;尽管引入了许多更新、更华丽的语言和工具&#xff0c;但它仍然是当今最流行的编程语言之一。这们老语言一直在蹒跚前行&#xff0c;享受着当今众多程序员和开发人员的爱。 Java有许多优势&#xff0c;再加上它的广泛使…

transformer论文及其变种

文章目录transformer模型细节slf-attn & multi-head attnabs positionwhy slf-attntransformer-XLInformer细节probSparse slf-attnLongformer细节GPT-generative pre-train模型结构下游任务&#xff1a;fine-tuningtransformer motivation&#xff1a;序列映射的任务&…

高速串行信号串接电容放在发送端还是接收端

在设计一些高速的串行信号&#xff0c;比如PCIE&#xff0c;STATA&#xff0c;USB3.0等&#xff0c;在差分信号线上面常常都会串接一个电容 这个电容主要有如下几个方面的作用&#xff1a; 1.滤除信号的直流分量&#xff0c;使信号关于0电平对称&#xff1b; 因为很多高速信号…

持续集成环境-maven、tomcat安装和配置

在Jenkins 集成环境中&#xff0c;用Maven编译、打包项目 壹&#xff0c;安装Maven 安装在jenkins服务器上 官方下载地址 上传安装包 解压 &#xff1a; tar -zxvf apache-maven-3.6.2-bin.tar.gzmkdir -p /opt/maven #创建目录 mv apache-maven-3.6.2/* /opt/maven #移…