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