赞
踩
基站和终端借助智能反射面进行辅助通信的系统,IRS通过将来自基站S的信号反射到终端D协助通信。其中,基站S天线数为M,终端D天线数为N,IRS由K个被动的反射元件组成,这些元件可以使用面向通信的软件进行控制并重新配置。
智能反射面系统可以分为三个信道:
首先是考虑经过智能反射面的信道, 即BS-IRS 和 IRS-UE信道。 这两个信道都可以看做是传统的MIMO信道, 我们考虑现在最热的毫米波信道, 即具有稀疏性, 径数有限。另外需要指出的是, 由于IRS是一个平面,因此其天线响应向量(array response vector),应当按照 UPA (uniform planar array) 来算, 而不能按ULA (uniform linear array)。 因此, 其响应可以写为:
其中, ϕ (phi) 和 θ (theta) 分别代表了信号入射的方位角和仰角 。 N 代表的是天线总数(智能反射面反射因子数)。 λ 是波长,d 是天线间隔, 一般都设置有d = 0.5 λ
对于一个 P × Q 的UPA天线阵列, 即共有P行, Q 列天线。 则对于( θ , ϕ ) 方向的响应(θ 为水平角, ϕ 为仰角) 可以写:
其中 p 和 q 代表了第p 行,第q 列的天线, 注意, 是从0行0列开始计数的。 另外需要注意的一点是, 这是默认天线以半波长为间隔。 如果你看到的指数项是类似于之类的形式, 其实是一样的, 因为我们一般默认 d = 0.5 λ
对于上式, 还有一个非常常用推荐的形式:
其中,
两者是等价的。
有了天线响应, 那么信道也就非常容易建模了。 对于发送端和接收端都是UPA阵列的情况下, 多径信道可以写为
对于每一径,信道就是接收的a 与发送端的a 的共轭转置相乘,再乘上一个标量系数。
(1)和(2)是怎么来的呢? 事实上, 他基于且必须基于下图中的建模:
如图:
假设UPA建立在yz平面上, 且原点为UPA的左下角第一个元素。
θ 为用户投影到xy 平面后, 与x轴夹角
ϕ 为用户与z 轴负半轴夹角。
可以这样理解: UPA天线的一列就是一条直线, 用户相当于一个点, 那么一条直线+线外的一个点构成了一个平面。 那么在这个平面上就是普通的ULA天线的情形。 那么决定这列天线响应的就是天线的入射角,显然就是ϕ。
以这样的建模, 是可以推出 (1)和(2)式的
以ϕ 为例。 不考虑UPA的水平方向, 比如令 Q = 1 , 也就是说只有一列, 此时UPA退化为一个ULA。 ULA的响应是以入射波与ULA的夹角作为入射角。 那么在ULA的这个三维建模中, 这个入射角, 显然, 就是且必须是用户与 z 轴负半轴的夹角。 因为UPA中的竖直方向其实就是z轴, 那么竖直方向上的入射夹角就是用户与z的夹角。 或者,更容易理解的,z轴与用户, 一线一点构成一个平面, 这个平面就是ULA的平面。
θ 角为什么这么建模? 推导太繁琐了, 按立体几何再利用远场近似就能推导。 (1)中为什么是sin θ 而不是cos θ 呢? 因为按照图中的建模, θ角的范围显然是-90度到90度之间, 而这样cos θ 的取值范围只有[0,1], 但sin θ 的取值范围是[-1,1]。 无疑是后者。
天线响应对于 θ 和ϕ 的求导, 在推算CRLB或者优化的时候, 很有用, 那结果是什么呢? 利用(2)外加一个经典的结论:
结合(2), 很容易有:
其中⊙是哈达玛积。
现在主流的基站的发送天线一般也以UPA形式为主。 因此,BS-IRS信道实际上就是两个UPA之间的MIMO信道仿真。 首先先写一个函数, 来实现单侧UPA的天线响应向量的仿真:
function y = array_response(phi,theta, N)
for m= 0:sqrt(N)-1
for n= 0:sqrt(N)-1
y(m*(sqrt(N))+n+1) = exp( 1i* pi* ( m*sin(phi)*sin(theta) + n*cos(theta) ) );
end
end
y = y.'/sqrt(N);
end
这里假设了UPA是正方形UPA,即横向和纵向的阵子数相等。 如果想考虑长方形UPA的话可以自行修改。就是将上面的响应公式翻译成了matlab代码而已。
有了这个函数, 就能很快地仿真BS-IRS信道了:
function H = generate_channel(Nt, Nr, L)
AoD = pi*rand(L, 2) - pi/2; %-2/pi~2/pi
AOA = pi*rand(L, 2) - pi/2; %-2/pi~2/pi
alpha(1) = 1; % gain of the LoS
alpha(2:L) = 10^(-0.5)*(randn(1,L-1)+1i*randn(1,L-1))/sqrt(2);
H = zeros(Nr, Nt);
for l=1:1:L
ar = array_response(AOA(L,1),AOA(L,2), Nr);
at = array_response(AOD(L,1),AOD(L,2), Nt);
H = H + sqrt(Nr * Nt)*alpha(l)*ar*at';
end
其中, Nt 代表发送天线数, Nr代表接收天线数, L代表路径总数 (1条LOS直射径+(L-1)条NLOS径)。每条径需要包含四个变量: 发送的方位角和仰角; 接收的方位角和仰角。 我们生成AOD, 代表发送的方位角和仰角。
AOD = pi*rand(L, 2) - pi/2;
这里相当于生成了 L × 2 L 个 −0.5π~0.5 π的角度,其中每条路径各有发送方位角和仰角一个。 AOA同理
这里需要指出, 实际中方位角和仰角的变化范围应该不同,仰角的变化范围会偏小, 因此更合理的仿真应该进一步限制其生成范围。 但就像上面所说,如果只是为了随机生成智能反射面信道用于仿真,不用纠结的那么细。
α (alpha)代表的是信道的衰落系数, 为了区别LOS径和NLOS径,我们默认第一径是LOS径,给了归一化的能量为1。 而NLOS径的能量则是高斯变量, 并且为了体现出与LOS径的能量差, 给了一个衰减系数。
截了下MIMO的公式。 和我们的模型有一点点区别, 但是每一径的生成是一样的,就是根据发送角和到达角分别生成ar和at然后相乘并乘上衰落因子。
这样的话就可以仿真BS-IRS信道了, 而 IRS - UE的信道也同理,同样可以建模为上面这个信道模型。
关于BS-UE的信道, 有几种不同的建模:
直接假设BS-UE间被阻隔, 即不存在这个信道。 这样的话也就不用仿真了。 这个场景也是合理的,许多论文中都是这样假设的。
假设被阻隔, 即不存在LOS径, 但是有NLOS径。 那么就可以用上面的代码去仿真,只需要把LOS径去掉就行了。
假设为瑞利衰落信道。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。