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

目录

一、理论基础

二、核心程序

三、测试结果

一、理论基础

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 

posted @ 2022-10-31 21:39  fpga和matlab  阅读(203)  评论(0编辑  收藏  举报