智能反射面(IRS)信道建模与仿真

模型:

     基站和终端借助智能反射面进行辅助通信的系统,IRS通过将来自基站S的信号反射到终端D协助通信。其中,基站S天线数为M,终端D天线数为NIRSK个被动的反射元件组成,这些元件可以使用面向通信的软件进行控制并重新配置。

智能反射面系统可以分为三个信道:

  • 基站直接到达用户的信道: BS-UE 信道             
  • 基站到智能反射面的信道: BS-IRS 信道
  • 智能反射面到用户的信道:IRS-UE 信道

首先是考虑经过智能反射面的信道, 即BS-IRS 和 IRS-UE信道。 这两个信道都可以看做是传统的MIMO信道, 我们考虑现在最热的毫米波信道, 即具有稀疏性, 径数有限。另外需要指出的是, 由于IRS是一个平面,因此其天线响应向量(array response vector),应当按照 UPA (uniform planar array) 来算, 而不能按ULA (uniform linear array)。 因此, 其响应可以写为:

其中, ϕ (phi) 和 θ (theta) 分别代表了信号入射的方位角和仰角 。 N 代表的是天线总数(智能反射面反射因子数)。 λ 是波长,d 是天线间隔, 一般都设置有d = 0.5 λ 

UPA信道建模

对于一个 P × Q 的UPA天线阵列, 即共有P行, Q 列天线。 则对于( θ , ϕ ) 方向的响应(θ 为水平角, ϕ 为仰角) 可以写:

其中 p 和 q 代表了第p 行,第q 列的天线, 注意, 是从0行0列开始计数的。 另外需要注意的一点是, 这是默认天线以半波长为间隔。 如果你看到的指数项是类似于之类的形式, 其实是一样的, 因为我们一般默认 d = 0.5 λ 

 对于上式, 还有一个非常常用推荐的形式:

其中,

 两者是等价的。

有了天线响应, 那么信道也就非常容易建模了。 对于发送端和接收端都是UPA阵列的情况下, 多径信道可以写为

 对于每一径,信道就是接收的a 与发送端的a 的共轭转置相乘,再乘上一个标量系数。

UPA详细建模

(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径去掉就行了。
假设为瑞利衰落信道。

 

  • 12
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: ULA(Uniform Linear Array)天线是一种常用的天线类型,由若干个等距排列的天线元件组成。在通信系统中,对于这种天线的建模和分析十分重要。因此,使用 MATLAB 对 ULA 天线进行建模有很大的实际应用价值。 在进行 ULA 天线的 MATLAB 建模时,首先需要定义 ULA 的基本参数,如天线数量、天线间距、波长等。根据定义的参数,可以利用 MATLAB 的函数生成数组来定义 ULA 天线的几何结构。 其次,需要在模型中设置一定的信号源,并将之与 ULA 天线建立相应的信号传输路径。这样,以此作为输入,可得到天线各元件上接收到的信号强度。 最后,在建立了 ULA 天线模型后,就可以进行各种分析和仿真操作。例如,可以利用 MATLAB 进行阵列的波束形成、空间滤波、干扰消除等操作。同时,还可以进行仿真实验,研究 ULA 天线在不同场景下的工作性能和实际应用效果。 综上所述,通过使用 MATLAB 对 ULA 天线进行建模和分析,可以很好地研究其性能和应用,为通信系统的设计和优化提供更为科学的依据和支撑。 ### 回答2: ULA天线是一种具有均匀线性阵列结构的天线,其信号接收和发射具有高度定向性。为了更好地研究和优化ULA天线的性能,我们需要进行建模仿真。此时,使用MATLAB软件进行建模是一种非常方便和高效的方法。 在MATLAB中建立ULA天线的模型,首先需要明确天线的几何结构和特性参数。通常,需要确定的参数包括天线元件数量、间距、阻抗、方向性模式等等。在确定好这些参数之后,我们可以使用MATLAB内置的函数和工具箱,如Array Toolbox和Signal Processing Toolbox等,快速地构建ULA天线的数学模型。 随后,我们可以通过给定的信号源,对该模型进行仿真和分析。在仿真过程中,可以通过改变天线调制方式、优化天线几何结构和参数等手段,来进一步改善天线的性能。此外,还可以对模型进行仿真实验,在实验验证过程中,可以更好地理解和验证天线模型的正确性和可靠性。 总之,使用MATLAB进行ULA天线建模是一种十分有用的研究和应用方法。通过建立数学模型和进行仿真分析,我们可以更好地了解天线特性和解决相关的问题,为实际应用提供支持。 ### 回答3: ULA天线是一种线阵天线,它由一些等间距的天线单元排列成行或列,可用于无线通信、雷达系统等领域。在matlab中,我们可以使用Phased Array System Toolbox来建模ULA天线。 首先,我们需要定义一些参数,例如天线数量(NumElements)、元间距(ElementSpacing)、频率(Frequency)等,这些参数将影响天线的性能。然后,我们可以使用phased.ULA函数创建一个ULA天线对象,并将参数传递给它。 接下来,我们可以使用对象的beamscan或pattern函数生成天线的方向图或波束图,用于分析其性能。例如,beamscan函数可以生成一个二维方向图,展示天线在不同角度下的辐射特性。 在建模过程中,我们还可以考虑一些因素,例如阵列权重、阵列指向和波束宽度等因素,以进一步优化天线的性能。例如,我们可以使用phased.SteeringVector函数来计算不同指向下的阵列权重。我们还可以使用phased.Radiator或phased.Collector对象模拟天线的天线阵列或接收器阵列,以帮助分析阵列的性能。 总之,使用matlab建模ULA天线可以帮助我们更好地了解其性能和参数,以提高其在通信和雷达领域的应用。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值