热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

CRAHNs网络概述和基于3DMIMO多径信道

目录一、理论基础二、核心程序三、测试结果一、理论基础CRAHNs是一种具有频谱感知功能的分布式多跳移动自组网络,无固定中心节点,每个节点都具备路由转发功能,组网方便快捷,在通信频点

目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

CRAHNs是一种具有频谱感知功能的分布式多跳移动自组网络,无固定中心节点,每个节点都具备路由转发功能,组网方便快捷,在通信频点受到干扰时,可通过频谱侦听检测技术,快速切换到其他信道质量好的频点上,使得传输的可靠性增强,抗毁能力强,组网方便。3D-MIMO的官方名称叫作Massive-MIMO,其实就是一种高增益的阵列天线。相比传统的8T8R天线,不仅实现了水平面的赋型,同时也利用更多的振子和通道实现了垂直面的赋型。天线赋型技术是通过不同通道电调阵子相位实现对于某一方向窄波束的汇聚从而实现辐射能量的增益,对于8T8R而言,在垂直方向上所有振子归属一个通道,因此无法实现垂直维度的赋型,而3D-MIMO天线通过垂直维度的通道隔离实现不同通道内所含振子的独立电调从而完成了垂直维度的赋型。对于LTE广播信道而言,3D-MIMO不进行类似PDSCH的赋型,而是通过32个双极化通道(64通道)中每个极化通道的权值进行波束优化调整。3D MIMO信道模型是以COST259标准以及WINNER模型为基础建模的。3D MIMO信道是基于三维空间的MIMO信道,其充分考虑了信道垂直方向的EOA到达角和EOD离开角。3D MIMO信道的几何空间示意图如下图所示:

 

 3D-MIMO信道频域响应函数可表示为:

 

 

相对于3D-MIMO信道,传统的2D-MIMO天线端口数较少导致波束较宽,并且只能在水平维度调整波束方向,无法将垂直维度的能量集中于终端。而3D-MIMO一般采用大规模的二维天线阵列,不仅天线端口数较多,而且可以在水平和垂直维度灵活调整波束方向,形成更窄、更精确的指向性波束,从而极大的提升终端接收信号能量并增强小区覆盖。

与传统MIMO不同的是,3D-MIMO中所采用的天线阵列规模发生了巨大变化,天线数目大幅增加,随着基站天线数目趋向很多时,各UE的信道将趋向于正交,用户间的干扰趋于消失,由此带来的巨大的天线阵列增益将有效提升每个用户的信噪比,因此可在相同的时频资源上支持更多用户的传输,提升小区的平均频谱效率、降低邻小区干扰、提升系统容量。


二、核心程序

clc;
clear all;

S=2;%发送天线个数
U=2;%接受天线个数
k_tx=0.1;
k_rx=0.1;
d=0:0.1:2;
p0=10;
Carrier_frequency_Hz=2e6;%载波
D=3e8/Carrier_frequency_Hz;%波长
D_tx=10*D;
P=0.01;%功率
P_tx=P/S;%每根天线发射功率
%D_rx=0.5*D;
rfa=0.25*pi;%极化角度
theta_tx=0.25*pi;%发射天线高度角
fai_tx=0*pi;%发射天线水平角
theta_rx=0.25*pi;
fai_rx=0*pi;%水平角
fai_u=0*pi;
theta_u=0.25*pi;
XPR_mean=9;
XPR_var=4;
E=exp(XPR_var^2.*((log(10)/log(2)).^2)/200-XPR_mean.*log(10)/(10*log(2)));
%G=normrnd(0,1,S,U);%独立高斯分布
G=[0.5377 -2.2588;1.8339 0.8622];
p1=zeros(2,21);
R=zeros(1,21);
C=zeros(2,21);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2D MIMO
for D_rx=0:0.1*D:2*D
D_rx
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%求发射端相关矩阵R_tx
R_tx=zeros(S);
for k1=1:S
for l=1:U
F11=@(y)(cos(rfa)+sin(rfa).*cos(y)).^2.*(exp(i*(2*pi/D)*(k1-l)*D_tx*(sin(theta_tx).*cos(fai_tx).*cos(y)+sin(theta_tx).*sin(fai_tx).*sin(y)))).*(exp(k_tx*(sin(theta_u).*cos(y-fai_u)+cos(fai_u).*cos(y))/(4*pi*sinh(k_tx))));
F21=@(y)(cos(rfa).*cos(y)).^2.*(exp(i*(2*pi/D)*(k1-l)*D_tx*(sin(theta_tx).*cos(fai_tx).*cos(y)+sin(theta_tx).*sin(fai_tx).*sin(y)))).*(exp(k_tx*(sin(theta_u).*cos(y-fai_u)+cos(fai_u).*cos(y))/(4*pi*sinh(k_tx))));
F12=@(y1)(cos(rfa)+sin(rfa).*cos(y1)).^2.*(exp(k_rx*(sin(theta_u).*cos(y1-fai_u)+cos(fai_u)*cos(y1))/(4*pi*sinh(k_rx))));
F22=@(y1)(cos(rfa).*cos(y1)).^2.*(exp(k_rx*(sin(theta_u).*cos(y1-fai_u)+cos(fai_u).*cos(y1))/(4*pi*sinh(k_rx))));
F1=quad(F11,0,2*pi).*quad(F12,0,2*pi);
F2=E*quad(F21,0,2*pi).*quad(F12,0,2*pi);
F3=E*quad(F11,0,2*pi).*quad(F22,0,2*pi);
F4=quad(F21,0,2*pi).*quad(F22,0,2*pi);
R_tx(k1,l)=S*P_tx*(F1+F2+F3+F4);
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%求接收端相关矩阵R_rx
R_rx=zeros(U);
for k1=1:U
for l=1:S
F11=@(y)(cos(rfa)+sin(rfa).*cos(y)).^2.*(exp(i*(2*pi/D).*(k1-l)*D_rx*(sin(theta_rx).*cos(fai_rx).*cos(y)+sin(theta_rx).*sin(fai_tx).*sin(y)))).*(exp(k_rx*(sin(theta_u).*cos(y-fai_u)+cos(fai_u).*cos(y))/(4*pi*sinh(k_rx))));
F21=@(y)(cos(rfa).*cos(y)).^2.*(exp(i*(2*pi/D)*(k1-l)*D_rx*(sin(theta_rx).*cos(fai_rx).*cos(y)+sin(theta_rx).*sin(fai_rx).*sin(y)))).*(exp(k_rx*(sin(theta_u).*cos(y-fai_u)+cos(fai_u).*cos(y))/(4*pi*sinh(k_rx))));
F12=@(y1)(cos(rfa)+sin(rfa).*cos(y1)).^2.*(exp(k_tx*(sin(theta_u).*cos(y1-fai_u)+cos(fai_u).*cos(y1))/(4*pi*sinh(k_tx))));
F22=@(y1)(cos(rfa).*cos(y1)).^2.*(exp(k_tx*(sin(theta_u).*cos(y1-fai_u)+cos(fai_u)*cos(y1))/(4*pi*sinh(k_tx))));
F1=quad(F11,0,2*pi).*quad(F12,0,2*pi);
F2=E*quad(F21,0,2*pi).*quad(F12,0,2*pi);
F3=E*quad(F11,0,2*pi).*quad(F22,0,2*pi);
F4=quad(F21,0,2*pi).*quad(F22,0,2*pi);
R_rx(k1,l)=U*P_tx*(F1+F2+F3+F4);
end
end
R=kron(R_rx,R_rx);
R=R./R(1,1);
for ii=1:U*S
for jj=1:U*S
R(ii,jj)=real(R(ii,jj)).^2+imag(R(ii,jj)).^2;
end
end
a=mean(R);
R_tx=R_tx./R_tx(1,1);
R_tx=R_tx./R_tx(1,1);
for ii=1:2
R_tx(:,ii)=R_tx(:,ii)/sqrt(real(R_tx(1,ii)).^2+imag(R_tx(1,ii)).^2+real(R_tx(2,ii)).^2+imag(R_tx(2,ii)).^2);
R_rx(:,ii)=R_rx(:,ii)/sqrt(real(R_rx(1,ii)).^2+imag(R_rx(1,ii)).^2+real(R_rx(2,ii)).^2+imag(R_rx(2,ii)).^2);
end
H=R_rx.^(0.5)*G*R_tx.^(0.5);
%H=reshape(R.^0.5*reshape(G,4,1),2,2);
I=eye(U,S);
p=p0/(1+E);
k2=int32(D_rx/(0.1*D))+1;
p1(1,k2)=max(a);
C(1,k2)=log(det(I+(p/S)*H*H.'))/log(2);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3D MIMO
for D_rx=0:0.1*D:2*D
D_rx
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%求发射端相关矩阵R_tx
R_tx=zeros(S);
for k1=1:S
for l=1:U
F11=@(x,y)(cos(rfa).*sin(x)+sin(rfa).*sin(x).*cos(y)).^2.*(exp(i*(2*pi/D)*(k1-l)*D_tx*(sin(theta_tx).*cos(fai_tx).*sin(x).*cos(y)+sin(theta_tx).*sin(fai_tx).*sin(x).*sin(y)+cos(theta_tx).*cos(x)))).*(exp(k_tx*(sin(x)*sin(theta_u).*cos(y-fai_u)+cos(fai_u).*cos(y))/(4*pi*sinh(k_tx)))).*sin(x);
F21=@(x,y)(cos(rfa).*cos(y)).^2.*(exp(i*(2*pi/D)*(k1-l)*D_tx*(sin(theta_tx).*cos(fai_tx).*sin(x).*cos(y)+sin(theta_tx).*sin(fai_tx).*sin(x).*sin(y)+cos(theta_tx).*cos(x)))).*(exp(k_tx*(sin(x)*sin(theta_u).*cos(y-fai_u)+cos(fai_u).*cos(y))/(4*pi*sinh(k_tx)))).*sin(x);
F12=@(x1,y1)(cos(rfa).*sin(x1)+sin(rfa).*sin(x1).*cos(y1)).^2.*(exp(k_rx*(sin(x1)*sin(theta_u).*cos(y1-fai_u)+cos(fai_u)*cos(y1))/(4*pi*sinh(k_rx)))).*sin(x1);
F22=@(x1,y1)(cos(rfa).*cos(y1)).^2.*(exp(k_rx*(sin(x1)*sin(theta_u).*cos(y1-fai_u)+cos(fai_u).*cos(y1))/(4*pi*sinh(k_rx)))).*sin(x1);
F1=dblquad(F11,0,pi,0,2*pi).*dblquad(F12,0,pi,0,2*pi);
F2=E*dblquad(F21,0,pi,0,2*pi).*dblquad(F12,0,pi,0,2*pi);
F3=E*dblquad(F11,0,pi,0,2*pi).*dblquad(F22,0,pi,0,2*pi);
F4=dblquad(F21,0,pi,0,2*pi).*dblquad(F22,0,pi,0,2*pi);
R_tx(k1,l)=S*P_tx*(F1+F2+F3+F4);
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%求接收端相关矩阵R_rx
R_rx=zeros(U);
for k1=1:U
for l=1:S
F11=@(x,y)(cos(rfa).*sin(x)+sin(rfa).*sin(x).*cos(y)).^2.*(exp(i*(2*pi/D).*(k1-l)*D_rx*(sin(theta_rx).*cos(fai_rx).*sin(x).*cos(y)+sin(theta_rx).*sin(fai_tx).*sin(x).*sin(y)+cos(theta_rx).*cos(x)))).*(exp(k_rx*(sin(x)*sin(theta_u).*cos(y-fai_u)+cos(fai_u).*cos(y))/(4*pi*sinh(k_rx)))).*sin(x);
F21=@(x,y)(cos(rfa).*cos(y)).^2.*(exp(i*(2*pi/D)*(k1-l)*D_rx*(sin(theta_rx).*cos(fai_rx).*sin(x).*cos(y)+sin(theta_rx).*sin(fai_rx).*sin(x).*sin(y)+cos(theta_rx).*cos(x)))).*(exp(k_rx*(sin(x)*sin(theta_u).*cos(y-fai_u)+cos(fai_u).*cos(y))/(4*pi*sinh(k_rx)))).*sin(x);
F12=@(x1,y1)(cos(rfa).*sin(x1)+sin(rfa).*sin(x1).*cos(y1)).^2.*(exp(k_tx*(sin(x1)*sin(theta_u).*cos(y1-fai_u)+cos(fai_u).*cos(y1))/(4*pi*sinh(k_tx)))).*sin(x1);
F22=@(x1,y1)(cos(rfa).*cos(y1)).^2.*(exp(k_tx*(sin(x1)*sin(theta_u).*cos(y1-fai_u)+cos(fai_u)*cos(y1))/(4*pi*sinh(k_tx)))).*sin(x1);
F1=dblquad(F11,0,pi,0,2*pi).*dblquad(F12,0,pi,0,2*pi);
F2=E*dblquad(F21,0,pi,0,2*pi).*dblquad(F12,0,pi,0,2*pi);
F3=E*dblquad(F11,0,pi,0,2*pi).*dblquad(F22,0,pi,0,2*pi);
F4=dblquad(F21,0,pi,0,2*pi).*dblquad(F22,0,pi,0,2*pi);
R_rx(k1,l)=U*P_tx*(F1+F2+F3+F4);
end
end
R=kron(R_rx,R_rx);
R=R./R(1,1);
for ii=1:U*S
for jj=1:U*S
R(ii,jj)=real(R(ii,jj)).^2+imag(R(ii,jj)).^2;
end
end
a=mean(R);
for ii=1:2
R_tx(:,ii)=R_tx(:,ii)/sqrt(R_tx(1,ii).^2+R_tx(2,ii).^2);
R_rx(:,ii)=R_rx(:,ii)/sqrt(R_rx(1,ii).^2+R_rx(2,ii).^2);
end
H=R_rx.^(0.5)*G*R_tx.^(0.5);
I=eye(U,S);
p=10.^(0.1*p0/(1+E));
k2=int32(10*D_rx/D)+1;
p1(2,k2)=max(a);
C(2,k2)=log(det(I+(p/S)*H*H.'))/log(2);
end
C=real(C);
% figure(1);
% plot(d,C(1,:),'--',d,C(2,:),'-');
% xlabel('d_R(\lambda)');
% ylabel('Capicity (bps/Hz)');
% legend('2-D','3-D',1);
% grid on;
figure(2);
plot(d,p1(1,:),'--',d,p1(2,:),'-');
xlabel('d_R(\lambda)');
ylabel('Correlation');
grid on;
legend('2D','3D',1);
h1=figure(1);
h2=figure(2);
set(h1,'Units','centimeters','Position',[10 10 8 8]);
set(h2,'Units','centimeters','Position',[10 10 8 8]);
save r23d.mat d C p1

 

function [output]=func_3DMIMO2(totalframe,channel_impulse,delay_number,tap_delay)
Tsample=3.255*1e-8;
Ns=length(totalframe);
out=zeros(delay_number,Ns);
framein=zeros(delay_number,Ns);

for i=1:delay_number
k=tap_delay(i);
if k>=1
framein(i,:)=[zeros(1,k),totalframe(1,1:Ns-k)];
else
framein(i,:)=totalframe;
end
out(i,:)=channel_impulse(i,:).*framein(i,:);
end
for i=1:Ns
output(1,i)=sum(out(:,i));
end


三、测试结果

 

 A01-149 



推荐阅读
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • Python开源库和第三方包的常用框架及库
    本文介绍了Python开源库和第三方包中常用的框架和库,包括Django、CubicWeb等。同时还整理了GitHub中最受欢迎的15个Python开源框架,涵盖了事件I/O、OLAP、Web开发、高性能网络通信、测试和爬虫等领域。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • 分布式系统一致性专题:3PC协议的优化和问题
    本文介绍了分布式系统一致性专题中的3PC协议,该协议是对2PC协议的优化和改进。文章详细解释了3PC协议的三个阶段:CanCommit、PreCommit和DoCommit,并分析了每个阶段可能出现的情况和处理方式。同时,文章也指出了3PC协议存在的问题,如参与者超时机制可能导致数据不一致等。总体来说,3PC协议在优化和改进方面取得了一定效果,但仍需继续努力解决数据不一致问题。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
author-avatar
王艳kiki
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有