CRAHNs网络概述和基于3D-MIMO多径信道

Posted fpga和matlab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CRAHNs网络概述和基于3D-MIMO多径信道相关的知识,希望对你有一定的参考价值。

目录

一、理论基础

二、核心程序

三、测试结果


作者ID  :fpga和matlab
CSDN主页:https://blog.csdn.net/ccsss22?type=blog
擅长技术:
1.无线基带,无线图传,编解码 
2.机器视觉,图像处理,三维重建 
3.人工智能,深度学习 
4.智能控制,智能优化
5.其他

一、理论基础

       CRAHNs是一种具有频谱感知功能的分布式多跳移动自组网络,无固定中心节点,每个节点都具备路由转发功能,组网方便快捷,在通信频点受到干扰时,可通过频谱侦听检测技术,快速切换到其他信道质量好的频点上,使得传输的可靠性增强,抗毁能力强,组网方便。

        早期原有的MIMO传输方案由于受限于传统的基站天线构架,一般只能在水平维度实现对信号空间分布特性的控制,还无法充分利用3D信道中垂直维度的自由度,未能从更深层次挖掘出MIMO技术对于改善移动通信系统整体效率与性能及最终用户体验的潜能。而随着天线设计构架的演进以及AAS(有源天线系统)技术的实用化发展,移动通信系统底层设计及网络结构设计思路也发生了巨大变化,直接推动着MIMO技术向着更高维度发展。随着移动通信的发展,4.5G作为4G的平滑演进,是人们进入智能生活的重要推进器。它将移动通信首次带入1Gbps时代,并倾力打造低时延、无处不在的全连接智能移动网络,3D MIMO作为5G Massive MIMO技术应用于4.5G的一个重要特性,具有组网灵活、有效降低选址难度、增强覆盖、降低干扰、提升容量等优点。

       5G通信系统中一个关键技术就是大规模阵列天线技术,俗称3D-MIMO天线技术。在4G实际网络运行环境中,3D-MIMO天线就已经进行了规模部署,可以实现覆盖增强,同时有效地缓解容量所带来的压力。为了更好地了解3D-MIMO技术关键原理以及应用实践,有必要从基本的MIMO技术原理入手,抽丝剥茧进行解读。3D-MIMO的官方名称叫作Massive-MIMO,其实就是一种高增益的阵列天线。相比传统的8T8R天线,不仅实现了水平面的赋型,同时也利用更多的振子和通道实现了垂直面的赋型。天线赋型技术是通过不同通道电调阵子相位实现对于某一方向窄波束的汇聚从而实现辐射能量的增益,对于8T8R而言,在垂直方向上所有振子归属一个通道,因此无法实现垂直维度的赋型,而3D-MIMO天线通过垂直维度的通道隔离实现不同通道内所含振子的独立电调从而完成了垂直维度的赋型。对于LTE广播信道而言,3D-MIMO不进行类似PDSCH的赋型,而是通过32个双极化通道(64通道)中每个极化通道的权值进行波束优化调整。3D MIMO信道模型是以COST259标准以及WINNER模型为基础建模的。3D MIMO信道是基于三维空间的MIMO信道,其充分考虑了信道垂直方向的EOA到达角和EOD离开角。对于大规模MIMO,通常情况下,采用3D-MIMO信道来实现。这是由于3D-MIMO一般采用大规模的二维天线阵列,不仅天线端口数较多,而且可以在水平和垂直维度灵活调整波束方向,形成更窄、更精确的指向性波束,从而极大的提升终端接收信号能量并增强小区覆盖。所以采用3DMIMO信道,可以符合大规模MIMO的信道特点。

       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

以上是关于CRAHNs网络概述和基于3D-MIMO多径信道的主要内容,如果未能解决你的问题,请参考以下文章

3D-MIMO信道模型的理论概述和matlab仿真

误码率仿真基于matlab多径信道下OFDM通信系统误码率仿真含Matlab源码 2078期

误码率仿真基于matlab多径信道下OFDM通信系统误码率仿真含Matlab源码 2078期

基于信号功率谱和GRNN神经网络的联合调制识别算法

多径信道下通过LMS均衡算法提高通信质量

多径信道下通过LMS均衡算法提高通信质量——详细版