m分集2跳OFDM系統(tǒng)中基于功率分配和子載波配對算法的信道容量matlab仿真

1.算法描述

隨著當(dāng)代無線通信事業(yè)的迅猛發(fā)展,無線頻譜資源已顯得越來越匱乏,傳統(tǒng)固定靜態(tài)的無線頻譜分配模式和策略,很難為未來的無線通信事業(yè)的進(jìn)一步發(fā)展提供更多可利用的無線頻譜帶寬和更高的頻譜利用率。認(rèn)知無線電技術(shù)是實(shí)現(xiàn)動態(tài)頻譜機(jī)會接入并有效解決無線頻譜資源匱乏問題的關(guān)鍵技術(shù)之一;正交頻分復(fù)用技術(shù)具有抗多徑干擾與抗頻率選擇性衰落能力強(qiáng),以及頻譜利用率高等優(yōu)點(diǎn),使其成為實(shí)現(xiàn)認(rèn)知無線電系統(tǒng)的理想備選方案之一。功率分配不但是傳統(tǒng)正交頻分復(fù)用系統(tǒng)中的關(guān)鍵核心技術(shù),而且還是認(rèn)知無線電系統(tǒng)中頻譜分析與判決的重要手段。在認(rèn)知無線電系統(tǒng)中,認(rèn)知用戶通信鏈路信道容量的最大化,同樣也需要深化對功率分配的研究。本文針對正交頻分復(fù)用調(diào)制子載波的IEEE802.11a下行鏈路的認(rèn)知無線電系統(tǒng),進(jìn)行了發(fā)射功率分配算法研究。


本課題,我們參考文獻(xiàn)《Power Allocation and Subcarrier Pairing Algorithm

for Regenerative OFDM Relay System》對OFDM的功率分配和子載波配對算法的信道容量進(jìn)行matlab仿真分析研究。


隨著無線通信的飛速發(fā)展,所需要的無線頻譜資源越來越多,當(dāng)前頻譜資源已顯得越來越缺乏。認(rèn)知無線電提供了一種按伺機(jī)的方式共享和利用頻譜的手段,可以有效地解決這一問題。認(rèn)知無線電技術(shù)通過智能感知通信環(huán)境中未使用的頻譜,并加以利用來提高頻譜的利用效率。OFDM的頻譜利用效率高,并且抗頻率選擇性衰落特性強(qiáng),已成為4G的主要應(yīng)用技術(shù)。隨著人們對通訊業(yè)務(wù)和質(zhì)量的要求不斷提高,OFDM技術(shù)的應(yīng)用也越來越廣泛。OFDM系統(tǒng)為了實(shí)現(xiàn)系統(tǒng)容量最大化通常會對系統(tǒng)用戶進(jìn)行合理的功率分配,因此功率分配是OFDM系統(tǒng)的關(guān)建技術(shù)之一。


在基于OFDM的認(rèn)知無線電系統(tǒng)中,授權(quán)用戶會受到認(rèn)知用戶帶內(nèi)子載波帶外旁瓣泄漏功率的干擾。這里引入了功率控制參數(shù)來調(diào)整授權(quán)用戶的干擾功率約束值,提出了一種認(rèn)知用戶子載波間的最優(yōu)功率分配算法,通過求解一個凸優(yōu)化問題來獲得最優(yōu)的功率分配方案。仿真結(jié)果表明:與其他算法相比,采用該方法獲得的功率分配方案,在滿足授權(quán)用戶干擾功率約束值的條件下,可以使認(rèn)知用戶的信道容量最大化。


為了使N路子信道信號在接收時(shí)能夠完全分離,需要滿足在每個碼元持續(xù)時(shí)間Ts內(nèi),任意兩個載波相互正交。三角函數(shù)系{1,sint,cost,...,sinnt,cosnt,...}滿足任意兩個不同函數(shù)之間相互正交(在[?π,π]內(nèi)兩個不同函數(shù)乘積積分為0),利用這一性質(zhì),可以得到彼此相互正交的載波。從時(shí)域上來看,發(fā)送端信號在空間中的疊加可以寫作:




從復(fù)數(shù)形式上可以看出,當(dāng)對時(shí)間t進(jìn)行離散化,OFDM其實(shí)就是對各路子載波上的傳輸信號(Bi)進(jìn)行了求傅里葉反變換的操作,OFDM在進(jìn)行調(diào)制時(shí)也是利用IFFT模塊實(shí)現(xiàn)的。 ?




從頻域上來看OFDM。調(diào)制時(shí),時(shí)域上是一個正弦載波和一個碼元波形(門函數(shù))的乘積,頻域上體現(xiàn)的是對門函數(shù)頻譜的搬移(門函數(shù)的頻譜為sinc函數(shù)),OFDM為了保證載波的正交性,最小子載頻間隔Δf=1Ts。 ?


2.仿真效果預(yù)覽

matlab2022a仿真結(jié)果如下:


3.MATLAB部分代碼預(yù)覽

%%

%不分集OFDM的功率分配不帶子載波配對算法下的信道容量;

%PA without pairing without diversity

C1 ?= 0;

C1s = 0;

for Ss = 1:length(Dist_Tx_Rn)

Ss

%利用蒙特卡洛算法思想,進(jìn)行多次的循環(huán),再計(jì)算平均

for q=1:Simu_Times

for Ts = 1:Time_Slot

Cha ?????= 0.5e-1*random('rayleigh',1,N_hop/Time_Slot,Num_sc);

Sub ?????= zeros(N_hop/Time_Slot,Num_sc);%每跳的子載波分布向量

Capacity = zeros(1,N_hop/Time_Slot); ????%定義容量向量

for i=1:N_hop/Time_Slot

%每一跳噪聲設(shè)定

n0 ???????= randn(1,10000)*sqrt(SCB*0.5e-10); ?????

N0 ???????= std(n0,1,2)^2/SCB;

%選擇其中的min值

[a,ind] ??= min(Cha(:,Time_Slot)); ??

%將選中的載波的信道因子賦值給該跳的子載波分布向量

Sub(i,ind)= a; ?????????????????????

%進(jìn)行注水功率分配

[Capacity1(i),Powers1] = pwrallo(SP,Sub(i,:),SCB,N0,gammar);

%載波被某一跳占用,將所有跳上的該載波信道因子設(shè)為0

Cha(:,ind) ????????????= 0; ????

end

while max(Cha(:))> 0 ??????????????%判斷是否有未分配的載波,有的話繼續(xù)分配

[b,indexmin] = min(Capacity1); ?%找出速率最小的跳

i ???????????= indexmin;

[c,indexmax] = max(Cha(i,:)); %給最小的跳分配載波

k ???????????= indexmax;

Sub(i,k) ????= c;

[Capacity1(i),Powers1] = pwrallo(SP,Sub(i,:),SCB,N0,gammar);

Cha(:,k) ????= 0;

end ????

end

for kk = 1:length(Powers1)

h1k ???= func_h1(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(2),kk);

h2k ???= func_h2(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(3),kk);

delta ?= (SNR)^2/2;

a1k ???= (abs(h1k))^2/delta;

a2k ???= (abs(h2k))^2/delta;

Pk ????= Powers1(kk)+1/((a1k*a2k)/(a1k+a2k));

C1(kk) = log2(1 + (a1k*a2k)/(a1k+a2k)*Pk);

end

C1s(q) = SB/(2*Num_sc)*sum(C1);

end

PA_Wo_P(Ss) = mean(C1s)/1e6;

end

%**************************************************************************

%**************************************************************************

%**************************************************************************

%**************************************************************************




%%

%不分集OFDM的均勻功率分配帶子載波配對算法下的信道容量;

%uniform PA without pairing without diversity

for Ss = 1:length(Dist_Tx_Rn)

Ss

%利用蒙特卡洛算法思想,進(jìn)行多次的循環(huán),再計(jì)算平均

for q=1:Simu_Times

%通過注水法得到的每個Powers1,然后進(jìn)行sub_carrier pairing

%通過注水法得到的每個Powers1,然后進(jìn)行sub_carrier pairing

Num_sc1 = randperm(Num_sc);

Num_sc2 = randperm(Num_sc); ???????

for kk = 1:length(Num_sc2)

h1k(kk)= func_h1(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(2),Num_sc1(kk));

h2k(kk)= func_h2(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(3),Num_sc2(kk));

hk(kk) = h1k(kk)*h2k(kk)/(h1k(kk) + h2k(kk));

delta ?= (SNR)^2/2;

a1k(kk)= (abs(h1k(kk)))^2/delta;

a2k(kk)= (abs(h2k(kk)))^2/delta;

end

%排序

A1k = sort(a1k);

A2k = sort(a2k);

for kk = 1:Num_sc

%均勻分配

Pk ?????= SP/Num_sc;

tmp1(kk)=(A1k(kk)*A2k(kk))/(A1k(kk)+A2k(kk));

C1(kk) ?= log2(1 + tmp1(kk)*Pk);

end

C1s(q) = SB/(2*Num_sc)*sum(C1);

end

uPA_W_P(Ss) = mean(C1s)/1e6;

end

%**************************************************************************

%**************************************************************************

%**************************************************************************

%**************************************************************************




%%

%不分集OFDM的均勻功率分配不帶子載波配對算法下的信道容量;

%uniform PA without pairing without diversity

for Ss = 1:length(Dist_Tx_Rn)

Ss

%利用蒙特卡洛算法思想,進(jìn)行多次的循環(huán),再計(jì)算平均

for q=1:Simu_Times

Num_sc1 = randperm(Num_sc);

Num_sc2 = randperm(Num_sc);

for kk = 1:Num_sc

h1k(kk) ???= func_h1(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(2),Num_sc1(kk));

h2k(kk) ???= func_h2(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(3),Num_sc2(kk));

delta ?????= (SNR)^2/2;

a1k(kk) ???= (abs(h1k(kk)))^2/delta;

a2k(kk) ???= (abs(h2k(kk)))^2/delta;

%均勻分配

Pk ????????= SP/Num_sc;

tmp2(kk) ??=(a1k(kk)*a2k(kk))/(a1k(kk)+a2k(kk));

C1(kk) ????= log2(1 + tmp2(kk)*Pk);

end

C1s(q) = SB/(2*Num_sc)*sum(C1);

end

uPA_Wo_P(Ss) = mean(C1s)/1e6;

end

01_064_m

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容