天天看點

CRAHNs網絡概述和基于3D-MIMO多徑信道

目錄

​​一、理論基礎​​

​​二、核心程式​​

​​三、測試結果​​

作者ID  :fpga和matlab

擅長技術:

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信道的幾何空間示意圖如下圖所示:

CRAHNs網絡概述和基于3D-MIMO多徑信道

3D-MIMO信道頻域響應函數可表示為:

CRAHNs網絡概述和基于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      

三、測試結果