波束成形(Beamforming)的数学推导(一)---从发射端看
(本文在 B 站上,上传了一个小的讲解视频 https://www.bilibili.com/video/BV1914y1a73V/)
本篇小文尝试用简单的语言,把波束赋形的数学原理说一下,力求浅显易懂,同时给出一个简单的 python 代码来演示这些数学公式。
本篇文章参考了 [MIMO通信的角域表示 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/369340833),在此特别感谢。本文是对这篇文章中一个很小的一个部分的重写,使用更加详细的语言来把我的理解说一下。
我们要探讨的是波束如何成形的,也就是 “指哪儿打哪儿”,能让无线电波按照指定的方向打过去。
天线阵列,我们讨论的是 ULA(Uniform Linear Array,均匀线性阵列),如下图所示:

是水平均匀排列的一组天线,天线之间的间隔距离记为 d .
若不计信号的衰减,我们发射的数据是 s ( 一个复数 ),而且接收端与发射端距离足够远,发射端各个天线到接收端的单个天线,之间的连线,从发射端天线附近看起来就是平行的(实际上不是平行的,是接近平行,是为了计算的一种简化,如果不简化,计算就过于复杂)。

假如天线阵列连线 与 接收端连线构成的夹角为
那么接收端接收的 来自不同发射天线的无线信号,就有不同的时间延迟,进而有不同的相位旋转.
我们以最边上的一个发射天线为参照,我们选择直线距离最短的那个天线做参考,则第一根发射天线的发射无线电波到达接收天线,则紧挨着的第二根发射天线的无线电波,要比第一根发射天线发射的无线电波,多走的距离为
则第 k 根天线发射的无线电波比第一根天线发射的无线电波,多走的距离为
则多走的时间为: 多走的距离除以光速 c
我们讨论单频的电磁波,假设频率为 f,则由于多走的时间,导致的相位偏差为:
其中:
为波长。
我们把
则 N 个天线,对应的相位偏差分别为:
我们是在频域分析的,所以,相当于发射的信号,虽然从每个发射天线出来的信号都是一样的,但是接收端接收到的信号,则分别被乘以:
则接收到的信号为:
注意:上式除以了 N,是能量归一化,不影响分析。
则接收到的信号,相对于发射的信号,其变化为:
若仅考虑能量增益,则:
经过一些推导(可参考后面的附录),上式整理为:
把
代入后,我们可以计算不同的角度对应不同的增益, 当 为 0 时,取最大值,即
时取最大。
用 python 程序,在极坐标上画出来的增益曲线如下:
此程序中假设
第一个图:8个天线排一排

16 个天线排一排

可以看出来,天线多,则越集中。
附录:
若只考虑幅度,则上面推导中最后的两个分式中,第一个分式的模是 1,可以忽略。