安装QuaDriga
要在MATLAB中安装QuaDRiGa,按照以下步骤操作:
下载QuaDRiGa:首先,您需要从GitHub的QuaDRiGa官方仓库下载QuaDRiGa软件。可以通过搜索QuaDRiGa的GitHub页面或其官方网站来找到下载链接。
解压文件:下载后,将文件解压到您希望存放的目录。
设置MATLAB路径:打开MATLAB,使用
addpath函数将包含QuaDRiGa文件的目录添加到MATLAB的路径中。例如:addpath('C:\路径\到\QuaDRiGa文件夹');运行安装脚本:在MATLAB命令窗口中,运行QuaDRiGa的安装脚本。通常这可以通过运行一个特定的.m文件来完成,比如:
run('setup_quadriga.m');验证安装:安装完成后,您可以通过调用QuaDRiGa的一些基本函数来检查它是否正确安装并能够运行。
QuaDriga仿真的基本步骤说明
要完成基本的信道模型配置,你通常需要执行以下步骤:
- 初始化仿真环境:
在 MATLAB 中,先初始化仿真环境。确保QuaDRiGa工具包已被正确安装,并添加到MATLAB的路径中。
- 创建模拟场景:
创建一个仿真场景,定义模拟的环境类型(如城市宏观、城市微观、室内外等)。
- 定义发送端和接收端:
定义发送端(基站)和接收端(用户设备)的参数,包括它们的位置、天线配置、功率和其他特性。
- 设置频率和带宽:
设置仿真的频率和带宽。这通常取决于您想要模拟的通信系统。
- 配置信道模型:
根据场景选择合适的信道模型。QuaDRiGa提供了多种预定义的信道模型,这些模型基于实测数据或标准文档。
- 运行仿真:
运行仿真以生成信道系数。这将创建一个信道对象,包含多径组成和信道特性。
下面将基于3GPP UMa 场景的信道,介绍具体的信道配置过程。
仿真参数(qd_simulation_parameters)
中心频率fc=3.5GHzf_c=3.5GHzfc=3.5GHz
采样频率为1.2(单移动场景的参考值,基站固定位置)
小区半径为200m
fc=3.5e9;numV=4;numH=16;nBSant=numV*numH;%分布半径R=200;s=qd_simulation_parameters;s.center_frequency=fc;s.sample_density=1.2;s.use_3GPP_baseline=1;对单小区的多用户下行场景信道容量进行仿真
天线设置(qd_arrayant)
基站使用3GPP-3D天线阵面,垂直方向4个辐射单元,水平方向16个辐射单元,总共64根发送天线,设置为双极化模式(±45°线极化),天线间距为半波长
用户侧每个用户使用全极化的单根天线作为接收天线
%设置BS和UE的天线类型aBS=qd_arrayant.generate('3gpp-3d',numV,numH,fc,3,[],d);aUE=qd_arrayant('omni');aUE.center_frequency=fc;仿真布局设置(qd_layout)
使用上述仿真参数s(qd_simulation_parameters类)来初始化仿真布局
设置发送基站数和接收用户数
l=qd_layout(s);l.no_tx=1;l.no_rx=nUE;设置基站位置和发送天线(aBS)
l.tx_position=[0;0;25];l.tx_array=aBS;设置随机的用户(UE)位置和接收天线(aUE)
用户的2D位置均匀分布在方位角为[-60°,60°],半径为200m的扇形区域内
fori=1:nUE ueRelPosition=[R*sqrt(rand);(rand-0.5)*120;0];%极坐标均匀分布表示%极坐标转化为直角坐标[xPos,yPos,zPos]=sph2cart(deg2rad(ueRelPosition(2)),deg2rad(ueRelPosition(3)),...ueRelPosition(1));l.rx_position(:,i)=[xPos,yPos,zPos];l.rx_array(1,i)=aUE;end下面对用户的高度进行设定,假定室外用户的高度为1.5m,室内用户随机分布在楼高为4-8层(12-24m)的任意楼层中,并设置传播场景为3GPP 38.901 UMa NLOS,80%的用户在室内。
floor=randi(5,1,l.no_rx)+3;forn=1:l.no_rxfloor(n)=randi(floor(n));endl.rx_position(3,:)=3*(floor-1)+1.5;%室内高度,楼层高度加上人高度indoor_rx=l.set_scenario('3GPP_38.901_UMa',[],[],0.8);% 设置仿真场景,80%用户在室内l.rx_position(3,~indoor_rx)=1.5;%室外高度,人高度为1.5m对仿真布局进行可视化操作
l.visualize([],[],0);view(-45,30)从2D俯视图中可以看出,用户分为两种类型,一种是3GPP_38.901_UMa_NLOS,另一种是3GPP_38.901_UMa_NLOS_O2I,分别代表室外和室内用户。
下面是仿真布局的3D图
生成qd_builder
使用仿真布局初始化qd_builder,并且设置路径损耗模型为WinnerPlusPathloss,生成LSF和SSF等各种参数
cb=l.init_builder;cb.gen_parameters;%winner_nlos大尺度参数,包含室内和室外pathloss_para_indoor=struct('model','winner_nlos','A1',44.9,'Ah1',-6.55,'B1',53.78,'C1',1.06,...'D1',1.06,'E1',0,'F1',-0.8,'A2',44.9,'Ah2',-6.55,'B2',52.32,'C2',9.77,'D2',5.83,'E2',0,'F2',-0.8,...'A3',44.9,'Ah3',-6.55,'B3',55.92,'C3',-2.2,'D3',5.83,'E3',0,'F3',-0.8);pathloss_para_outdoor=struct('model','winner_nlos','A1',44.9,'Ah1',-6.55,'B1',16.33,'C1',26.16,...'D1',5.83,'E1',0,'F1',0,'A2',44.9,'Ah2',-6.55,'B2',14.78,'C2',34.97,'D2',5.83,'E2',0,'F2',0,...'A3',44.9,'Ah3',-6.55,'B3',18.38,'C3',23,'D3',5.83,'E3',0,'F3',0);cb(1,1).plpar=pathloss_para_indoor;cb(2,1).plpar=pathloss_para_outdoor;从qd_builder生成信道系数
h=cb.get_channels;这时得到的信道h是一个1×100的矩阵,每个元素是一个qd_channel对象,对应与100个用户的信道,每个用户的信道(qd_channel)如下图所示
h(1,1).coeff;
其中的coeff是该用户信道的CSI,为1×128×17的矩阵,分别表示1个接收天线、128个发送天线和17条路径。
除了得到多径的信道矩阵之外,我们还可以使用qd_channel类的fr方法,将信道变换到频域并返回频率响应,例如我们对h(1,1)进行频率变换
h(1,1).fr(bandwidth,no_carrier);输入的参数为带宽数和子载波数目,输出得到信道的频率响应矩阵
信道容量仿真
从上述生成的信道出发,对下行多用户的ZF接收信道容量进行仿真,设置基站的发送总功率为240w,带宽为100MHz,接收端100个用户固定不变,对每个用户均匀功率分配,热噪声功率谱为**-174dBmW/Hz**,每个单用户的发送信噪比为127.8dB,
对半波长间隔天线面的基站的下行信道计算遍历信道容量,结果是558.1559bit/s/Hz;过采样后天线间隔为1/4波长,用户不变,计算遍历信道容量,结果是842.0352bit/s/Hz,信道容量的提升大约为1.51(151%)
注:此处未对信道矩阵H做归一化,存在着一定的阵列增益
计算每个用户的接受信噪比,半波长间隔时,接收信噪比范围为[-0.5dB,55dB];过采样后天线间隔为1/4波长时,接收信噪比范围为[0.59dB,63dB]