代 濤,李正權,2,王舟明
(1.江南大學 物聯網工程學院,江蘇 無錫 214122;2.江蘇省未來網絡創新研究院,江蘇 南京 211111)
大規模多輸入多輸出(MIMO, multiple-input multiple-output)技術具有數據傳輸速率高、信道容量大[1]的顯著優勢,能夠擴大信號傳輸范圍,提高通信質量,因此是未來無線通信領域的研究熱點。在功率受限情況下,信號傳輸實時性和精確度無法滿足數據業務應用需求,故大規模MIMO上行鏈路中需引入快速準確的信號檢測技術以提升系統性能,但基站端有海量天線,會使信號檢測運算復雜度大幅增加,因而亟待設計一種高性能且復雜度低的信號檢測算法。
一般來說,信號檢測算法可以分為非線性檢測和線性檢測兩種類型。常見的非線性檢測算法有最大似然(maximum likelihood, ML)檢測算法[2],它可以實現最佳的性能,但其復雜度隨著天線數呈指數增加,難以應用于大規模MIMO系統。為了得到復雜度低并且接近ML算法性能的非線性算法,文獻[3]提出了消息傳遞(message passing,MP),文獻[4]提出了期望傳播(expectation propagation,EP),但在天線數量很高或者調制階數很高時,其實現復雜度依然不小。在大規模MIMO系統中,天線的數量一般要比用戶的數量大很多,每個用戶之間的信道近似正交,會出現信道硬化現象[5]。由于這個特性,一些線性檢測算法可以得到很好的檢測性能,與此同時信號處理方式也更為簡便,常用的有迫零(forced zero,ZF)檢測算法[6],不過ZF算法沒有考慮噪聲影響,尤其當信噪比較低時其誤碼率性能差。為此,提出了最小均方誤差(minimum mean square error,MMSE)算法[7],但ZF和MMSE都帶來了高維矩陣求逆的問題。
對于高維矩陣求逆問題,典型算法可以分為兩類:一類是基于級數展開替代矩陣求逆典型算法。文獻[8]提出了Neumann級數近似算法,該算法將矩陣求逆轉換為一系列的矩陣向量乘法。然而,復雜度的降低并不明顯,尤其當Neumann級數階數高于2時,算法的復雜度仍高達O(K3),并且隨著用戶數的增加,性能明顯下降。另一類是使用迭代替代矩陣求逆,將MMSE檢測中求逆問題轉化為求解線性方程組問題,通過迭代算法求解線性方程組。Richardson迭代[9]雖然實現復雜度較低,但是算法收斂速度慢;還有高斯賽德爾(GS, Gauss-Seidel)[10]、連續超松弛(SOR, successive over relaxation)[11]、Kaczmarz[12]算法等,這些方法的計算步驟之間有很高的關聯性,只能按順序進行計算,并且存在初始的收斂性較差問題。因此,研究者提出了一些檢測方法來提高計算的并行性。Jacobi算法[13]是一種簡單的迭代算法,具有很高的并行性,但是算法依然存在初始收斂性較差的缺點。而最速下降法(steepest descent,SD)[14]在初始更新就可以得到較好的收斂性,通過為算法提供有效搜索方向,來使得算法收斂加快。不過傳統最速下降法步長固定,相對比下Barzilai-Borwein算法[15]是沿著最速下降的方向,來選擇合適步長以進行迭代,提高算法性能。因此在實際的應用中可以得到更好的性能。文獻[16]提出Barzilai-Borwein和最速下降法結合的一種信號檢測算法(SDBB),雖然性能得到提升,但該算法并沒有選取一個合適的初值,來提高算法的收斂速度,與此同時對步長選取沒有進行更細致的考慮。文獻[17]對上述算法進行了分析和證明,描述為CBB算法,為防止出現歧義,下文統稱SDBB算法為CBB。
文中通過對文獻[16]算法進行改進來解決信號檢測問題,通過對該算法設置一個合適的初值,通過對不同步長進行了仿真,分析出更加合適的步長。仿真結果證明,對于Barzilai-Borwein算法的性能隨著天線數量增加而明顯下降的問題,所提出的改進算法在適應不同數量的用戶方面更有效率,同時算法在誤碼率性能方面優于Barzilai-Borwein和CBB算法。該算法在誤碼率方面可以接近MMSE,同時又避免復雜度過高的問題。同時該算法在無創微波成像[18]中也被應用。
文中的其余部分組織如下:第1節介紹了大規模MIMO和信號檢測的系統模型;第2節介紹了MMSE信號檢測算法、Barzilai-Borwein迭代算法以及所提算法;第3節對不同算法的復雜性進行分析對比;第4節對MMSE、Barzilai-Borwein、CBB算法、改進修正Barzilai-Borwein算法進行了誤碼率性能仿真;最后,在第5節中得出結論。
如圖1,大規模MIMO系統中,假設接收端有N根天線,發送端有K個用戶,每個用戶配備單個天線,一般情況下N≥K。
圖1 大規模MIMO系統模型
大規模MIMO系統接收端信號yC可以表示為
yC=HCxC+nC。
(1)
文中,假設每個用戶使用單根天線,同時每個用戶功率設置為E|xi|2=1,xi∈Q,其中Q代表調制符號集。xC=[x1,x2,…,xK]T∈CK×1表示K個用戶同時發送的經過調制以后的符號,信號經過的是瑞利衰落信道,信道增益矩陣[19]為HC=[h1,h2,…,hK]∈CN×K,信道增益向量為hj=[h1,j,h2,j,…,hN,j]T∈CN×1,hi,j表示第j個發送天線與第i個接收天線之間的信道衰落系數,與此同時hi,j是滿足均值為0,方差為1的復高斯分布。其中nC=[n1,n2,…,nN]∈CN×1表示N維的加性高斯白噪聲(additive white Gaussian noise,AWGN),ni滿足均值為0,方差為σ2。
為了對數據進行分析處理,將復數信道模型HC轉換為實數信道模型,同時對發送信號xC,接收信號yC以及噪聲nC都進行復實數轉換,各個模型可以轉換為:
(2)
(3)
(4)
(5)
其中R(·)表示復矩陣或者向量的實部,I(·)表示復矩陣或者向量的虛部。
之后信號傳輸可以改寫為
y=Hx+n。
(6)
文中的SNR是指每個接收天線的平均信噪比(signal-to-noise ratio, SNR),表達式如下:
(7)
W=(HTH+σ2I2K)-1HT。
(8)
(9)
A表示MMSE濾波矩陣,b表示y的匹配濾波輸出。通過式(9)可以發現,檢測過程可以看作線性方程組問題。不過需要注意的是,A矩陣直接求逆需要復雜度數量級為O(K3)。
Barzilai-Borwein迭代是由Barzilai和Borwein提出的迭代方法,與傳統最速下降法使用固定步長相比,該迭代方法式在沿著最速下降方向來選擇合適的步長。式(9)可以轉換為線性方程組問題:
(10)
(11)
Barzilai-Borwein迭代的基本形式[15]為
(12)
(13)
迭代算法的初始值不影響算法的收斂性,但初始值選取對迭代算法的收斂速度和檢測精度有一定影響。一般來說,初始值用零向量時,算法收斂會很慢。為了擁有更快收斂速度,本文算法選取Richardson初值[21]
(14)
修正Barzilai-Borwein算法[17]是Raydan和Svaiter結合Barzilai-Borwein和最速下降法提出的一種非單調下降算法,具體的迭代表達式:
(15)
(16)
(17)
令h(t)=Ar(t),整理式(15)可得
(18)
本文嘗試對上式中步長改進變為θμ(t),其中θ∈(0~α),考慮到步長如果太大,會導致算法無法收斂,所以α最大值設定為2,式(7)可改寫為
(19)
圖2圖3為對于不同θ進行仿真對比。
圖2 32QAM情況下,不同步長與誤碼率之間關系
圖3 64QAM情況下,不同步長與誤碼率之間關系
通過圖2圖3的仿真可以看出,兩種情況下,采用步長為0.9倍時,誤碼率是相對最低的,后續本文算法采用0.9倍步長來進行算法仿真。
結合上文描述,改進修正Barzilai-Borwein算法的流程可以總結如表1。
表1 改進修正Barzilai-Borwein的信號檢測算法
對于大規模MIMO信號檢測系統,計算復雜度是衡量檢測器性能的重要指標之一。雖然CBB迭代算法比Barzilai-Borwein多出來一項,但其實其中復雜度高的部分h(t)=Ar(t)在求解μ(t-1)過程中已經得到,因此兩種算法的復雜度差不多,同時本文在修正CBB算法基礎上進行改進,復雜度的增加很少。本文將一次實數乘法的復雜度記為1,不同算法都需要HTH的復雜度為8NK2,HTy的復雜度為4NK。
通過修正Barzilai-Borwein迭代算法的形式,計算各部分的復雜度。
1)初始解的復雜度
2)修正Barzilai-Borwein迭代復雜度
(b)h(t)的復雜度:包括一個2K×2K的矩陣A和一個2K×1的向量r(t),它需要的復雜度為4K2。
(c)θμ(t)的復雜度:包括一個1×2K的向量(r(t))T和一個2K×1的向量r(t),還有一個1×2K的向量(r(t))T和一個2K×1的向量h(t),還有兩個常數相乘需要復雜度為1,需要的復雜度為4K。
表2為不同算法復雜度的比較。
表2 不同算法復雜度對比
為了驗證本文算法的有效性,采用MATLAB程序對算法進行了仿真實驗,將其與Barzilai-Borwein算法、CBB算法和MMSE算法進行了對比,采用誤碼率作為指標來對改進修正Barzilai-Borwein算法性能進行評價。為了更好對比Barzilai-Borwein和本文所提算法,將Barzilai-Borwein算法也采用了Richardson初值進行仿真,各仿真選用的幀數L=20 000;信噪比范圍設置在0∶15 dB;信源數據采用randi函數隨機生成,天線采用了兩種配置32×128和16×64;調制方式采用了32QAM和64QAM兩種方式;不過圖4的具體參數設置為32×128,調制方式為32QAM;圖9的信噪比設置為12 dB,用戶天線范圍設置為32∶64,基站天線數為128,調制方式為32QAM。
如圖4可以發現在低信噪比的情況下,由于噪聲對于信號的比重很高,檢測算法無法有效區分信號,因此無論迭代的次數如何改變,誤碼率曲線基本保持不變。對比之下,在信噪比到10 dB時候,誤碼率曲線開始有下降趨勢,并且最終隨著迭代次數增加到4時,誤碼率基本保持到一個穩定值;在信噪比12 dB可以明顯發現誤碼率曲線隨著迭代次數增加下降快速,并且在迭代4次時,誤碼率基本維持在10-6,隨著迭代次數提高,誤碼率還有小的提升,但是相對于提升的復雜度來說,繼續進行迭代,并不是一個好的策略。
圖4 不同迭代次數下,不同信噪比對應的誤碼率曲線
如圖5,表示的是采用32QAM調制方式下32×128天線數情況下不同算法的誤碼率曲線圖。Barzilai-Borwein算法誤碼率曲線隨著迭代次數增加誤碼率雖然下降速度較快,但是與MMSE算法相比較來說,依然存在差距;CBB算法在迭代3次時,算法的誤碼率曲線與Barzilai-Borwein算法迭代4次時的曲線基本相同。改進修正Barzilai-Borwein算法的收斂速度明顯更快,該算法在迭代3次時已基本接近CBB算法迭代4次曲線,并且迭代4次時已基本接近MMSE檢測性能。
圖5 在32QAM和32×128條件下,不同信噪比下誤碼率
圖6表示的是32QAM調制16×64的情況下,不同算法的誤碼率曲線。Barzilai-Borwein算法在迭代4次時,信噪比在15 dB左右時,誤碼率才降低到10-4左右;CBB算法,迭代3次時,信噪比在13dB左右誤碼率已經降到10-4,同樣的改進修正Barzilai-Borwein在迭代3次時,13 dB左右誤碼率就已經低到10-6,并且改進修正Barzilai-Borwein算法在迭代4次誤碼率曲線已接近MMSE算法。
圖6 在32QAM和16×64條件下,不同信噪比下誤碼率
如圖7,與圖5相比,隨著調制方式提高,各個算法誤碼率曲線降低變緩,通過兩圖對比,即使調制方式提高,改進修正Barzilai-Borwein算法依然保持自己的優勢,在迭代4次時依然與MMSE接近。
圖8與圖7對比也可以發現,在基站天線數與用戶數比值不變時,基站天線數和用戶天線數大小變化并不會影響本文所提算法的性能,改進修正Barzilai-Borwein算法依然保持這高收斂,僅需要很少的迭代次數就可以達到MMSE性能。
圖7 在64QAM和32×128條件下,不同信噪比下誤碼率
圖8 在64QAM和16×64條件下,不同信噪比下誤碼率
圖9是在不同用戶數下各算法的誤碼率曲線圖,隨著用戶數的降低,各算法的誤碼率都在降低,CBB算法迭代4次與改進修正Barzilai-Borwein的迭代3次誤碼率曲線基本重合,與此同時也改進修正后的Barzilai-Borwein算法誤碼率在迭代4次時,雖然在用戶數較高的情況下,與MMSE相比較性能稍差一點,但總體依然很接近MMSE性能,并且通過整體可以發現,用戶數在32:64變化,本文提出算法整體性能依然優于Barzilai-Borwein和CBB算法。
圖9 天線數為128,不同用戶數對應的誤碼率曲線
MMSE算法可以實現近似最優的性能,但是由于其實現需要的復雜很高,無法滿足實時性要求,在實際場景中無法應用,而改進修正Barzilai-Borwein算法相對MMSE算法復雜度降低了一個數量級,同時在迭代4次時也基本達到MMSE性能。Barzilai-Borwein和CBB算法雖然單次迭代實現復雜度與改進修正Barzilai-Borwein來說相對較低,但是本文提出算法需要更少的迭代次數,就可以基本達到MMSE算法的檢測性能,所以在一定程度上,該算法依然有優勢??偟膩碚f,該算法可以在檢測性能和實現復雜度方面達到平衡。