m基於OFDM系統的PAPR效能matlab模擬,對比LFDMA,IFDMA,DFDMA

我爱C编程發表於2024-04-01

1.演算法模擬效果

matlab2022a模擬結果如下:

2.演算法涉及理論知識概要

在正交分頻多工(Orthogonal Frequency Division Multiplexing, OFDM)系統中,訊號的峰值功率相對於其平均功率的比例稱為峰均功率比(Peak-to-Average Power Ratio, PAPR)。由於多個子載波的疊加,OFDM符號可能出現較大的瞬時幅度,導致非線性失真,尤其是在功率放大器處。計算公式為:

其中 X(n) OFDM符號的離散時間表示,maxn​∣X(n)2 表示符號的最大瞬時功率,而 E[X(n)2] 表示符號的平均功率。

LFDMA (Low Frequency Diversity Multiple Access)

LFDMA是一種針對OFDM系統PAPR問題提出的改進方案,它透過對連續子載波分配資料以減少相位同步導致的峰值。儘管LFDMA的具體數學模型和PAPR降低原理可能因具體實施方案而異,但一般而言,它試圖透過子載波分配策略來分散相位相干性,從而降低整體PAPR

IFDMA (Interleaved Frequency Division Multiple Access)

IFDMA透過交織子載波分配機制來降低PAPR。相較於OFDM,每個使用者只在部分而非全部子載波上傳輸,且子載波間隔不連續。這樣可以減少同時達到峰值的機率,進而降低PAPR。對於第 k 個使用者,其訊號在第 n 個子載波上的調製通常採用:

其中dk[] 是使用者的基帶資料符號,Ts​ 是取樣間隔,Δf 是子載波間隔,t 是時間索引,G 是子載波交織步長,Tc​ 是總的子載波數目。

DFDMA (Distributed Frequency Division Multiple Access)

DFDMA(有時也稱為SC-FDMASingle Carrier Frequency Division Multiple Access)是一種更接近單載波傳輸的技術,透過在頻域進行預處理(如透過IFFT),然後在時域上進行分段傳輸,從而達到類似OFDM的頻譜效率,但能顯著降低PAPR。它的原理是將資料在一個較長的符號週期內均勻分佈,減少了單個符號內的峰值。

在實際的數學表述中,DFDMA的訊號生成步驟與OFDM類似,但在資料對映至子載波前先進行分幀和時域上的分佈,再透過IFFT轉換到時域,因此PAPR較低。

LFDMAIFDMA透過不同的子載波分配策略來分散功率峰值,而DFDMA則透過改變資料在時頻域的分佈特徵來降低PAPR。理論上,這些技術都能有效地降低傳統OFDMPAPR問題,但是它們各自的實施複雜度、頻譜效率、以及對系統效能的影響(如BER、系統延遲等)各有不同。具體的數學分析通常涉及到大量的模擬和理論推導,包括但不限於機率密度函式、累積分佈函式的分析,以及各種PAPR降低技術的效果評估。

3.MATLAB核心程式

for n = 1:MTKL
    % 資料轉換為頻域。
    X = fft(Signal);
 
    % 初始化子載波。
    Y = zeros(Nsubcs,1);    
    
    % 子載波對映。
    if Nsubc == 1
        Y(1:Q:Nsubcs) = X; % IFDMA對映。
    elseif Nsubc == 2
        Y(1:Nsymb) = X; % LFDMA對映。
    elseif Nsubc == 3
        Y(1:Q_tilda:Q_tilda*Nsymb) = X; % DFDMA對映。
    end
 
    % 資料轉換回時域。
    y = ifft(Y);
 
    % 執行脈衝整形。
    if pulseShaping == 1
        y_oversampled = zeros(Nos*length(y), 1); % 初始化過取樣陣列。
        y_oversampled(1:Nos:end) = y; % 進行過取樣。
        y_result = filter(psFilter, 1, y_oversampled); % 過濾。
    else
        y_result = y;
    end
    
    % 計算PAPR。
    papr(n) = 10*log10(max(abs(y_result).^2) / mean(abs(y_result).^2));
end
 
 
% Plot CCDF.
[N,X] = hist(papr, 100);
 
papr11=papr;
figure;
hist(papr, 100)
grid on
 
 
semilogy(X,1-cumsum(N)/max(cumsum(N)),'b')
 
if Modsel == 1 & Nsubc == 1
   save R211.mat X N papr11
end
if Modsel == 2 & Nsubc == 1
   save R221.mat X N papr11
end
if Modsel == 1 & Nsubc == 2
   save R212.mat X N papr11
end
if Modsel == 2 & Nsubc == 2
   save R222.mat X N papr11
end
if Modsel == 1 & Nsubc == 3
   save R213.mat X N papr11
end
if Modsel == 2 & Nsubc == 3
   save R223.mat X N papr11
end

  

相關文章