波束成形(Beamforming)的數(shù)學推導(一)---從發(fā)射端看
(本文在 B 站上,上傳了一個小的講解視頻? https://www.bilibili.com/video/BV1914y1a73V/)
本篇小文嘗試用簡單的語言,把波束賦形的數(shù)學原理說一下,力求淺顯易懂,同時給出一個簡單的 python 代碼來演示這些數(shù)學公式。
本篇文章參考了 [MIMO通信的角域表示 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/369340833),在此特別感謝。本文是對這篇文章中一個很小的一個部分的重寫,使用更加詳細的語言來把我的理解說一下。
我們要探討的是波束如何成形的,也就是 “指哪兒打哪兒”,能讓無線電波按照指定的方向打過去。
天線陣列,我們討論的是 ULA(Uniform Linear Array,均勻線性陣列),如下圖所示:

是水平均勻排列的一組天線,天線之間的間隔距離記為? d .
若不計信號的衰減,我們發(fā)射的數(shù)據(jù)是 s ( 一個復數(shù) ),而且接收端與發(fā)射端距離足夠遠,發(fā)射端各個天線到接收端的單個天線,之間的連線,從發(fā)射端天線附近看起來就是平行的(實際上不是平行的,是接近平行,是為了計算的一種簡化,如果不簡化,計算就過于復雜)。

假如天線陣列連線 與 接收端連線構成的夾角為
那么接收端接收的 來自不同發(fā)射天線的無線信號,就有不同的時間延遲,進而有不同的相位旋轉.
我們以最邊上的一個發(fā)射天線為參照,我們選擇直線距離最短的那個天線做參考,則第一根發(fā)射天線的發(fā)射無線電波到達接收天線,則緊挨著的第二根發(fā)射天線的無線電波,要比第一根發(fā)射天線發(fā)射的無線電波,多走的距離為
則第 k 根天線發(fā)射的無線電波比第一根天線發(fā)射的無線電波,多走的距離為
則多走的時間為:? 多走的距離除以光速 c
我們討論單頻的電磁波,假設頻率為 f,則由于多走的時間,導致的相位偏差為:
其中:
為波長。
我們把
則 N 個天線,對應的相位偏差分別為:
我們是在頻域分析的,所以,相當于發(fā)射的信號,雖然從每個發(fā)射天線出來的信號都是一樣的,但是接收端接收到的信號,則分別被乘以:
則接收到的信號為:
注意:上式除以了 N,是能量歸一化,不影響分析。
則接收到的信號,相對于發(fā)射的信號,其變化為:
若僅考慮能量增益,則:
經過一些推導(可參考后面的附錄),上式整理為:
把
代入后,我們可以計算不同的角度對應不同的增益, 當 為 0 時,取最大值,即
時取最大。
用 python 程序,在極坐標上畫出來的增益曲線如下:
此程序中假設??
第一個圖:8個天線排一排

16 個天線排一排

可以看出來,天線多,則越集中。
附錄:
若只考慮幅度,則上面推導中最后的兩個分式中,第一個分式的模是 1,可以忽略。