安装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的扇形区域内
for i = 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;
for n = 1:l.no_rx
floor( n ) = randi(floor(n) );
end
l.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]
本教程介绍在MATLAB中安装QuaDriga及进行3GPP UMa NLOS信道仿真的详细步骤。包括安装软件、设置仿真参数、天线与布局,生成qd_builder和信道系数,最后对下行多用户的ZF接收信道容量进行仿真,对比不同天线间隔下的信道容量和接收信噪比。
350

被折叠的 条评论
为什么被折叠?



