这篇文章想讲一下 智能反射面中 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(θ,ϕ)=PQ1[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(θ,ϕ)≜Q1[1,ejπsinθlsinϕl,…,ejπ(Q−1)sinθlsinϕl]Taz(ϕl)≜P1[1,ejπcosϕl,…,ejπ(P−1)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=NrNtl=0∑Lαlar,l(θl,ϕl)at,lH(ψl,γl)
简而言之, 对于每一径,信道就是接收的 a \mathbf{a} a 与 发送端的 a \mathbf{a} a 的 共轭转置相乘, 再乘上一个标量系数。
(1)和(2)是怎么来的呢? 事实上, 他基于且必须基于下图中的建模:
如图:
以这样的建模, 是可以推出 (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(U⊗V)=d(U)⊗V+U⊗d(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…,Q−1]T⊙ay(θ,ϕ))⊗az(ϕ)∂ϕ∂a(θ,ϕ)=(jπsinθcosϕ[0,1…,Q−1]T⊙ay(θ,ϕ))⊗az(ϕ)+ay(θ,ϕ)⊗(−jπsinϕ[0,1,…,P−1]T⊙az(ϕ))
其中 ⊙ \odot ⊙是哈达玛积。
文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态
文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境
文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn
文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker
文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机
文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk
文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入
文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。 Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。
文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动
文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计
文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;gt;Jni-&amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图
文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法