前言
最近在做项目的时候接触到了Matlab自带的5G工具包中, 有CDL信道的函数API,可以方便地对信道进行建模。 从而使我们更专注于信道估计或者是波束成形方面的工作,而不需要投注过多精力在信道仿真上。
这篇博客是对Matlab CDL信道文档的笔记。
CDL信道的全称是 clustered delay line, 应该是指信道是由多个不同延时的簇 (cluster) 组成的。
API介绍
首先, 我们通过下面语句创建一个 CDL信道对象: cdl = nrCDLChannel() 很容易理解, nr就是5G NR标准的意思。 这样是创建了一个默认的CDL信道对象。 也可以通过以下语法, 将默认的参数改为自定义参数: cdl = nrCDLChannel(Name,Value) . 默认的生成信道对象为:
- DelayProfile: 有默认的多种配置可选,代表了常见的信道延迟模型。 也可以进行自定义,从而对每一径的 延迟 , 路损, 角度 进行自定义。
- Angle Scaling: 设置为true后可以对 角度范围, 平均角度进行自定义设置。
- DelaySpread:时延扩展设置。 默认为30e-9, 即30ns.
- CarrierFrequency: 载波频率, 默认为4e9, 即4GHz.
- MaximumDopplerShift:最大多普勒频偏, 默认为5Hz. 如果设为0, 则认为信道时不变。
- UTDirectionOfTravel:终端的入射角度, 包括仰角和水平角,默认为0度和90度。
- SampleRate:采样率, 决定了采样时间间隔。 默认为30.72e6Hz, 即一个采样时间间隔约为 32.55ns。
- TransmitAntennaArray:发送天线阵列设置。 可以修改天线的组成数量(包括
m
×
n
m\times n
m×n排列的多个UPA, 每个UPA包含了
p
×
q
p\times q
p×q个天线, UPA的极化方式)。可以修改天线的间隔。
- ReceiveAntennaArray:同上, 为接收端的天线阵列设置。
- RandomStream:控制随机变量种子
- ChannelFiltering: 默认为true, 如果设为True, 则可以直接用
signalOut = cdl(signalIn) 这样的语法来模拟信号通过信道。 如果设为false, 则可以通过[pathGains,sampleTimes] = cdl() 得到不同采样时间的信道数据。 - TransmitAndReceiveSwapped:可以将下行改为上行。
- SampleDensity 和 NumTimeSamples: 都是用于决定总共生成几个采样点。 前者是根据半波长内有SampleDensity个点,来计算出需要的采样点数。 而当将SampleDensity设置为Inf时, 则直接可以设定NumTimeSamples,来人为确定需要几个采样点。
获取信道
我们重点讲一下如何获取Matlab自带默认产生的CDL信道矩阵。 首先,我们需要运行ChannelFiltering = false , 从而使得下面语法得以成功运行: [pathGains,sampleTimes] = cdl() 这里, 输出的pathGains矩阵就是我们想要的信道矩阵。 这是一个
N
C
S
×
N
P
×
N
T
×
N
R
N_{CS}\times N_{P}\times N_T \times N_R
NCS?×NP?×NT?×NR?的矩阵。
- 第一维
N
C
S
N_{CS}
NCS? 就是采样点数。这一维可以刻画信道的时变性。 笔者尝试过, 如果将多普勒平移设置为0, 即信道体现为时不变。 那么这
N
C
S
N_{CS}
NCS?个
N
P
×
N
T
×
N
R
N_{P}\times N_T \times N_R
NP?×NT?×NR? 矩阵均相等。
- 第二维
N
P
N_P
NP? 代表的是路径数。 按默认CDL信道的话,会共有23径。 每一径的延时, 角度 都可以在参数中查看到。
-
N
T
×
N
R
N_T\times N_R
NT?×NR? 就是我们常见的信道矩阵。
|