基於1bitDAC的MU-MIMO的非線性預編碼演算法matlab效能模擬

简简单单做算法發表於2024-08-03

1.演算法執行效果圖預覽

(完整程式執行後無水印)

2.演算法執行軟體版本

matlab2022a

3.部分核心程式

(完整版程式碼包含詳細中文註釋和操作步驟影片)

        % 計算符號能量,歸一化,以及其他引數
        Energy =  sqrt(mean(abs(Maps).^2));
        Maps   = Maps/Energy;          
        Lmaps  = length(Maps);
        bps    = log2(Lmaps); 
        bits   = de2bi(0:Lmaps-1,bps,'left-msb'); 
        % 生成隨機位元序列,對映到符號,新增噪聲,構建通道矩陣等   
        Xbits  = randi([0 1],Us,bps);
        Ybits  = bi2de(Xbits,'left-msb')+1;
        Zmod   = Maps(Ybits).';
        Noise  = (randn(Us,1)+1i*randn(Us,1))/sqrt(2);
        H      = (randn(Us,Ns)+1i*randn(Us,Ns))/sqrt(2);
        H1     = sqrt(1 - Herr)*H + sqrt(Herr)*(randn(Us,Ns)+1i*randn(Us,Ns)); 
        % 遍歷預編碼器型別    
        for j3=1:length(Pcd_sel) 
            % 遍歷每個SNR值 
            for k=1:length(SNRs)
                N0 = 10.^(-SNRs(k)/10);
                if strcmp(Pcd_sel{j3},'ZF')==1
                   [x,beta] = func_zf(Zmod,H1); 
                end
                if strcmp(Pcd_sel{j3},'WF')==1
                   [x, beta, ~] = func_WF(Zmod,H1,N0);
                end
                if strcmp(Pcd_sel{j3},'MRT')==1
                   [x, beta, ~] = func_MRT(Zmod,H1);
                end
                if strcmp(Pcd_sel{j3},'ADMM')==1
                   wb            = 1; 
                   [x, beta, vr] = func_ADMM(Zmod,H1,N0);  
                   Vr_sets       = [Vr_sets vr];
                end
                y  = H*x + sqrt(N0)*Noise;
                Y_ = beta*y; 
 
                [~,Iidx]    = min(abs(Y_*ones(1,length(Maps))-ones(Us,1)*Maps).^2,[],2); 
                bhat        = bits(Iidx,:);
                err         = (Ybits~=Iidx); 
                BER(m,j3,k) = BER(m,j3,k) + sum(sum(Xbits~=bhat))/(Us*bps);                   
            end         
        end     
    end
154

  

4.演算法理論概述

在現代無線通訊系統中,多使用者多輸入多輸出(MU-MIMO, Multi-User Multiple-Input Multiple-Output)技術是提高頻譜效率和資料傳輸速率的關鍵。然而,高精度的數字模擬轉換器(DAC)在大規模MIMO系統中成本高昂,能耗巨大,因此基於1-bit DAC的預編碼技術應運而生,它透過僅使用1-bit的量化來顯著降低硬體複雜度和功耗。本文將深入探討基於1-bit DAC的MU-MIMO系統中的非線性預編碼演算法,並與傳統線性預編碼技術,如ZF(Zero-Forcing)、WF(Water-Filling)、MRT(Maximum Ratio Transmission)以及較為先進的ADMM(Alternating Direction Method of Multipliers)演算法進行對比。

4.1 基於1-bit DAC的非線性預編碼背景

在MU-MIMO系統中,預編碼的目的是將多路訊號對映到天線陣列上,以在接收端實現使用者間的干擾消除或最小化。當使用1-bit DAC時,訊號只能被量化為+1或-1,這導致預編碼過程變得非常具有挑戰性,因為它本質上是非線性的,需要設計特定的演算法來逼近理想線性預編碼的效能。

訊號量化可表示為:

其中,sk​是原始的複數預編碼訊號,s^k​是量化後的訊號,sign(⋅)sign(⋅)函式根據訊號的實部和虛部確定量化結果。

一種常見的非線性預編碼方法是基於符號最大化準則,即尋找一組預編碼向量,最大化各個使用者訊號經過量化後的能量,同時考慮相互間的干擾。對於一個基站天線數為N,服務使用者數為K的系統,接收訊號模型可表示為:

4.2 ZF(Zero-Forcing)

ZF預編碼的目的是完全消除使用者間的干擾,其預編碼矩陣WZF​滿足:

其中,H是所有使用者通道矩陣,H∗是H的共軛轉置。

4.3 WF(Water-Filling)

WF演算法是一種功率分配策略,用於最佳化每個子載波的發射功率,以最大化系統總吞吐量。其目標是解決如下最佳化問題:

其中,p是功率分配向量,Ptotal​是總功率預算,SINRk​是第k個使用者的訊雜比。

4.3 MRT(Maximum Ratio Transmission)

MRT預編碼是基於通道增益的,目的是最大化訊號能量與干擾加噪聲比,其預編碼向量為:

4.4ADMM(Alternating Direction Method of Multipliers)

ADMM是一種迭代最佳化演算法,被用於解決帶約束的最佳化問題,如在MU-MIMO系統中結合功率約束最佳化預編碼矩陣。ADMM透過交替最佳化原始問題的不同子問題,達到全域性最優解或近似最優解。

相關文章