智能反射面| 关于UPA信道建模_uniform planar array-程序员宅基地

技术标签: 智能反射面  通信原理  

前言

这篇文章想讲一下 智能反射面中 UPA (uniform planar array)的信道建模。 之前在智能反射面| Matlab代码实现的信道仿真一文中, 很简略地给了一个基本的UPA仿真代码, 这篇更详细地说一下 关于 面天线 的建模。

当然了, UPA并不只使用于智能反射面中, 尽管在科研方向上, 为了简化问题, 在MIMO问题中大家假设的往往都是线天线阵(ULA), 但实际中往往都是二维的UPA天线。 而在智能反射面中, 作者们实在无法睁眼说瞎话地假设智能反射面是一个线阵了, 毕竟人家名字里都带着一个“面”字还是要“面子”的。 也因此,在IRS方向中, UPA阵列的信道建模更普遍。

结论

先说结论, 是对需要只需要答案而不求甚解的读者的尊重。

对于一个 P × Q P\times Q P×Q的UPA天线阵列, 即共有 P P P行, Q Q Q列天线。 则对于 ( θ , ϕ ) (\theta, \phi) (θ,ϕ)方向的响应可以写为( θ \theta θ为水平角, 被称为azimuth angle, ϕ \phi ϕ 为 仰角, 被称为 elevation angle) :
a ( θ , ϕ ) = 1 P Q [ 1 , ⋯   , e ȷ π ( p sin ⁡ θ sin ⁡ ϕ + q cos ⁡ ϕ ) , ⋯   e ȷ π ( ( Q − 1 ) sin ⁡ θ sin ⁡ ϕ + ( P − 1 ) cos ⁡ ϕ ) ] T (1) \begin{array}{r} \mathbf{a}(\theta, \phi)=\frac{1}{\sqrt{PQ}}\left[1, \cdots, e^{\jmath \pi(p \sin \theta \sin \phi+q \cos \phi)}, \cdots\right. \left.e^{\jmath \pi((\sqrt{Q}-1) \sin \theta \sin \phi+(\sqrt{P}-1) \cos \phi)}\right]^{T} \end{array} \tag{1} a(θ,ϕ)=PQ 1[1,,eȷπ(psinθsinϕ+qcosϕ),eȷπ((Q 1)sinθsinϕ+(P 1)cosϕ)]T(1)
其中 p p p q q q 代表了第 p p p行,第 q q q列的天线, 注意, 是从0行0列开始计数的。 另外需要注意的一点是, 这是默认天线以半波长为间隔。 如果你看到的指数项是类似于 e ȷ 2 π λ d e^{\jmath \frac{2\pi}{\lambda}d} eȷλ2πd 之类的形式, 其实是一样的, 因为我们一般默认 d = 1 2 λ d = \frac{1}{2}\lambda d=21λ

对于(1), 还有一个非常常用且笔者更推荐的形式:

a ( θ , ϕ ) = a y ( θ , ϕ ) ⊗ a z ( ϕ ) (2) \mathbf{a}(\theta, \phi)=\mathbf{a}_y(\theta, \phi) \otimes \mathbf{a}_z(\phi) \tag{2} a(θ,ϕ)=ay(θ,ϕ)az(ϕ)(2)
其中,
a y ( θ , ϕ ) ≜ 1 Q [ 1 , e j π sin ⁡ θ l sin ⁡ ϕ l , … , e j π ( Q − 1 ) sin ⁡ θ l sin ⁡ ϕ l ] T a z ( ϕ l ) ≜ 1 P [ 1 , e j π cos ⁡ ϕ l , … , e j π ( P − 1 ) cos ⁡ ϕ l ] T \mathbf{a}_{y}(\theta, \phi) \triangleq \frac{1}{\sqrt{Q}}[1, e^{\mathrm{j}\pi\sin\theta_l\sin\phi_l}, \dots, e^{\mathrm{j}\pi(Q-1)\sin\theta_l\sin\phi_l}]^T\\ \mathbf{a}_{z}(\phi_l) \triangleq \frac{1}{\sqrt{P}}[1, e^{\mathrm{j}\pi\cos\phi_l}, \dots, e^{\mathrm{j}\pi(P-1)\cos\phi_l}]^T ay(θ,ϕ)Q 1[1,ejπsinθlsinϕl,,ejπ(Q1)sinθlsinϕl]Taz(ϕl)P 1[1,ejπcosϕl,,ejπ(P1)cosϕl]T

这里显然(2)比(1)清爽了很多, 很容易验证, 两者是等价的。

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

H = N r N t ∑ l = 0 L α l a r , l ( θ l , ϕ l ) a t , l H ( ψ l , γ l ) \mathbf{H}=\sqrt{N_{\mathrm{r}} N_{\mathrm{t}}} \sum_{l=0}^{L} \alpha_{l} \mathbf{a}_{\mathrm{r}, l}\left(\theta_{l}, \phi_{l}\right) \mathbf{a}_{\mathrm{t}, l}^{H}\left(\psi_{l}, \gamma_{l}\right) H=NrNt l=0Lαlar,l(θl,ϕl)at,lH(ψl,γl)
简而言之, 对于每一径,信道就是接收的 a \mathbf{a} a 与 发送端的 a \mathbf{a} a 的 共轭转置相乘, 再乘上一个标量系数。

UPA详细建模

(1)和(2)是怎么来的呢? 事实上, 他基于且必须基于下图中的建模:
在这里插入图片描述
如图:

  • 假设UPA建立在yz平面上, 且原点为UPA的左下角第一个元素。
  • θ \theta θ为用户投影到 x y xy xy平面后, 与 x x x轴夹角
  • ϕ \phi ϕ为用户与 z z z轴负半轴夹角。 可以这样理解: UPA天线的一列就是一条直线, 用户相当于一个点, 那么一条直线+线外的一个点构成了一个平面。 那么在这个平面上就是普通的ULA天线的情形。 那么决定这列天线响应的就是天线的入射角, 显然就是 ϕ \phi ϕ.

以这样的建模, 是可以推出 (1)和(2)式的。

怎么说呢? 以 ϕ \phi ϕ为例。 不考虑UPA的水平方向, 比如令 Q = 1 Q=1 Q=1, 也就是说只有一列, 此时UPA退化为一个ULA。 那么我们都知道, ULA的响应是什么呢? 是以入射波与ULA的夹角作为入射角。 那么在ULA的这个三维建模中, 这个入射角, 显然, 就是且必须是 用户 与 z z z轴负半轴的夹角。 因为UPA中的竖直方向其实就是 z z z轴, 那么竖直方向上的入射夹角就是用户与 z z z的夹角。 或者, 更容易理解的, z z z轴与用户, 一线一点构成一个平面, 这个平面就是ULA的平面。 那么谁是入射角, 一目了然。

至于 θ \theta θ角为什么这么建模? 推导太繁琐了, 不写出了, 按立体几何再利用远场近似就能推导。 这里想说的是其实很简单, (1)中为什么是 sin ⁡ θ \sin\theta sinθ而不是 cos ⁡ θ \cos\theta cosθ呢? 因为按照图中的建模, θ \theta θ角的范围显然是-90度到90度之间, 而这样 cos ⁡ θ \cos\theta cosθ的取值范围只有[0,1], 但 sin ⁡ θ \sin\theta sinθ的取值范围是[-1,1]。 无疑是后者。

响应求导

天线响应对于 θ \theta θ ϕ \phi ϕ的求导, 在推算CRLB或者优化的时候, 很有用, 那结果是什么呢? 利用(2)外加一个经典的结论:

d ( U ⊗ V ) = d ( U ) ⊗ V + U ⊗ d ( V ) \mathrm{d}(\mathbf{U}\otimes \mathbf{V}) = \mathrm{d}(\mathbf{U})\otimes \mathbf{V} +\mathbf{U}\otimes \mathrm{d}(\mathbf{V}) d(UV)=d(U)V+Ud(V)

结合(2), 很容易有:
∂ a ( θ , ϕ ) ∂ θ = ( j π cos ⁡ θ sin ⁡ ϕ [ 0 , 1 … , Q − 1 ] T ⊙ a y ( θ , ϕ ) ) ⊗ a z ( ϕ ) ∂ a ( θ , ϕ ) ∂ ϕ = ( j π sin ⁡ θ cos ⁡ ϕ [ 0 , 1 … , Q − 1 ] T ⊙ a y ( θ , ϕ ) ) ⊗ a z ( ϕ ) + a y ( θ , ϕ ) ⊗ ( − j π sin ⁡ ϕ [ 0 , 1 , … , P − 1 ] T ⊙ a z ( ϕ ) ) \frac{\partial\mathbf{a}(\theta,\phi)}{\partial\theta}=\left(\mathrm{j} \pi \cos \theta \sin \phi[0,1 \ldots, Q-1]^{T} \odot \mathbf{a}_{y}(\theta, \phi)\right) \otimes \mathbf{a}_{z}(\phi)\\ \frac{\partial\mathbf{a}(\theta,\phi)}{\partial\phi}=\begin{array}{l} \left(\mathrm{j} \pi \sin \theta \cos \phi[0,1 \ldots, Q-1]^{T} \odot \mathbf{a}_{y}(\theta, \phi)\right) \otimes \mathbf{a}_{z}(\phi) +\mathbf{a}_{y}(\theta, \phi) \otimes\left(-\mathrm{j} \pi \sin \phi[0,1, \ldots, P-1]^{T} \odot \mathbf{a}_{z}(\phi)\right) \end{array} θa(θ,ϕ)=(jπcosθsinϕ[0,1,Q1]Tay(θ,ϕ))az(ϕ)ϕa(θ,ϕ)=(jπsinθcosϕ[0,1,Q1]Tay(θ,ϕ))az(ϕ)+ay(θ,ϕ)(jπsinϕ[0,1,,P1]Taz(ϕ))
其中 ⊙ \odot 是哈达玛积。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39274659/article/details/111477860

智能推荐

.NET Core使用EF Core框架_.net core ef-程序员宅基地

文章浏览阅读5.9k次,点赞2次,收藏16次。Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。EF Core 可用作对象关系映射程序 (O/RM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。core不像framwork一样可以在项目信件中直接选择ado.net实体数据模型。如下说简单点,就是在我们做增删改查的时候,不用再写非常繁琐的SQL语句,在以前,我们写完SQL语句后,查询出来的数据还要_.net core ef

Ionic4路由配置_ionrouteroutlet-程序员宅基地

文章浏览阅读2.9k次。ionic 4路由配置方法:步骤一:先新建一个page页面$ ionic g page excute步骤二:在tabs.module.ts里导入import { ExcutePageModule } from ‘…/pages/sub/excute/excute.module’;@NgModule({imports: [IonicModule,CommonModule,Forms..._ionrouteroutlet

setdefault函数的用法及理解_elf.samples.setdefault(-程序员宅基地

文章浏览阅读3.6k次,点赞4次,收藏10次。dict.setdefault(key, default=None)功能:如果键不存在于字典中,将会添加该键并将default的值设为该键的默认值,如果键存在于字典中,将读出该键原来对应的值,default的值不会覆盖原来已经存在的键的值。参数:key----要查找的键default-----查找的键不存在时用于设置的默认值使用方法示例:(以下使用方法是我理解setdefault函..._elf.samples.setdefault(

Qt 右击弹出菜单 点击菜单获取QAction 的文本_qt 右键菜单获取选中项qaction-程序员宅基地

文章浏览阅读1.9k次。Qt 右击弹出菜单 获取QAction 的文本说明因为QAction的signal triggered不能直接穿参数给槽函数这里是直接把信号与槽的信号转为了QAction类这样就可以直接调用QAction的函数获取当前点击的条目的文本了sender是属于QObject类 可以直接从 高的转为底的类代码 //QAction *action = static_cast<QAction*>(sender()); QAction *action1 = (QAction*)se_qt 右键菜单获取选中项qaction

吉大计算机研究生996综合,996算什么?来看看研究生究竟有多累-程序员宅基地

文章浏览阅读898次。hi,大家好!不知道大家最近休息的怎么样,累不累?正如热评所说,一天天啥也不干,但也觉得很累,现在年轻人“累”点太低了。回想小编考研的那段时间,每天宿管阿姨刚开门就去图书馆看书,中午为了节省时间特意错开吃饭高峰,晚上在宿舍关门前回来,在宿舍接着学习到一点左右,虽然每一天的时间安排得满满的,但是很充实,有自己的小目标,并不感觉到累。真正说到累,也是考完研的那段时间,每天都无所事事,说是要把考研时没有..._计算机研究生累吗

Fiori配置之My Inbox APP Configuration-程序员宅基地

文章浏览阅读631次。My Inbox APP是一种transcational类型的APP,但是它和transcational类型的APP的配置方法有所不同,因为它调用的是ABAP工作流。使用My Inbox APP,可以在任何时间地点在不同设备上make decisions。My Inbox APP可以分为:(1)All Items InboxMy Inbox在SAP Fiori启动板中提供了预配置的“All I..._my inbox

随便推点

【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战009--DateSet实用API详解009_def map[r: typeinformation: classtag]-程序员宅基地

文章浏览阅读6.9k次。DateSet的API详解九joindef join[O](other: DataSet[O], strategy: JoinHint): UnfinishedJoinOperation[T, O]def join[O](other: DataSet[O]): UnfinishedJoinOperation[T, O]Creates a new DataSet by joining this Da_def map[r: typeinformation: classtag]

【python--程序】python-socket实现简单网页服务器_python使用socket创建网页-程序员宅基地

文章浏览阅读1.4k次,点赞3次,收藏9次。前言最近有粉丝建议博主出一篇讲使用socket进行实际编程应用的帖子。这里博主就讲使用Python socket实现简单的网页服务器.前体准备当前实验将会使用tcp的80端口,请各位读者将当前电脑的网页服务器的80端口修改或关闭。本教材使用python (版本:3.7.2,使用python3即可)工作过程这里我们先简单介绍下服务器是如何响应浏览器访问的:1. 建立连接。 既然..._python使用socket创建网页

mysql备份锁表吗_mysql备份数据库 肿么锁表-程序员宅基地

文章浏览阅读1.2k次。mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATETABLE INSERT等。如果给mysqldump进行备份,从库上停止复制的sql线程然后mysqldump,这个是个很好的选择,因为停止复制就没有写,就不用担心锁表的问题 。下面提供两只备份方法:一、MyISAM引擎备份1. 由于MyISAM引擎为表级锁,因此,..._mysqldump备份数据库可以备份锁定表吗

最小直径生成树-程序员宅基地

文章浏览阅读915次,点赞3次,收藏3次。最小直径生成树问题描述:求无向图中直径最小的生成树图的绝对中心定义:图上的某个在节点或边上的点,使得到该点最远的点的距离最小。根据 图的绝对中心 的定义可以知道,到绝对中心距离最远的结点至少有两个,且这两个最远点经过中心点的最短路是最小直径生成树的直径。求解方法:设 d[i][j]d[i][j]d[i][j] 表示图中节点 i,ji,ji,j 之间的最短路。rk[i][j]rk[i][j]rk[i][j] 表示到点 iii 第 jjj 远的点。如图,d[c][i]=min⁡(d[u][i]+x,_最小直径生成树

各领域公开数据集下载_ai challenge 2018 dataset download-程序员宅基地

文章浏览阅读1.5k次。各领域公开数据集下载上网找到了个数据集的整理,不用再搜就自己转过来。原文地址: https://zhuanlan.zhihu.com/p/25138563金融美国劳工部统计局官方发布数据房地产公司 Zillow 公开美国房地产历史数据沪深股票除权除息、配股增发全量数据,截止 2016.12.31上证主板日线数据,截止 2017.05.05,原始价、前复权价、后复权价,126..._ai challenge 2018 dataset download

Python用requests库爬取网页内容,返回为‘’(为空)的解决办法。_python中的request到目标网址为什么返回未登录的页面-程序员宅基地

文章浏览阅读2.3w次,点赞19次,收藏42次。首先介紹一下我們用360搜索派取城市排名前20。我们爬取的网址:https://baike.so.com/doc/24368318-25185095.html我们要爬取的内容:html字段:robots协议:现在我们开始用python IDLE 爬取import requestsr = requests.get("https://baike.so.com/doc/2436831..._python中的request到目标网址为什么返回未登录的页面

推荐文章

热门文章

相关标签