【频谱分配】基于频谱空洞预留算法的频谱分配算法的matlab仿真
1.軟件版本
MATLAB2013a
2.本算法理論知識
??????? 基于概率切換和最小化概率切換的頻譜切換算法,由于過多的考慮了資源的合理利用,使得次用戶的不切換概率并大于等于的情況,從而導致對應的次用戶的服務質量顯著下降,考慮到這個因素,文獻[40]提出了一種基于頻譜空洞預留機制的頻譜分配算法,從而最大程度上保證這些次用戶的服務質量。
??????? 根據文獻所述,當出現授權用戶的時候,次用戶必須暫停當前所占的行道,并切換到其他的頻譜空洞上繼續完成未完成的服務。然后,過多的頻譜切換會帶來很多切換時延,這樣就很難保證次用戶的服務質量,特別對于一些實時性較強的服務,影響更大。文獻[40] 提出的頻譜空洞的預留方案使不能保證服務質量的次用戶直接使用預留的頻譜空洞,不再進行頻譜感知、頻譜請求等過程,從而最大程度上降低頻譜切換時延。
??????? 根據文獻所述,當空洞上進行通信時實際的不切換概率,如果 大于 ,說明用于通信的頻譜空洞可以滿足次用戶的服務質量要求,不需要再給該次用戶預留任何頻譜空洞;否則,如果 ,說明次用戶在實際獲得的頻譜空洞上進行通信時達不到自己的服務質量要求,很可能會出現中斷服務等情況,需要為之預留頻譜空洞,使它切換到預留頻譜空洞上繼續完成通信。由此可見,為次用戶預留頻譜空洞的條件為:
我們假設預留的頻譜空洞時間至少可以剛好滿足服務質量的要求,從而有:
?進一步可以得到:
?
?更進一步可以得到:
?最后可以得到:
? ? ? ?式子為預留因子,當預留因子為0的時候,說明不需要再為次用戶的通信預留其他的頻譜空洞,當預留因子為1的時候,表示在服務時間內都要在預留頻譜空洞上進行通信。通過預留頻譜空洞算法,就可以保證次用戶通信過程中的服務質量要求,彌補頻譜空洞匹配算法的不足,使次用戶順利完成自己的服務。
?3.核心代碼
clc; clear; close all; warning off; RandStream.setDefaultStream(RandStream('mt19937ar','seed',1)); addpath 'My_Function\' %自定義函數路徑 addpath 'My_Figure\' %仿真結果圖保存路徑 addpath 'My_Result\' %仿真結果及仿真中間結果數值保存路徑 %參數化 lemda = 0.2; M = 50;%用戶數量 %信道數目 N = 10; lemda = 1/2000 + (1/200-1/2000)*rand(N,1);%1/2000 ~ 1/200的均勻分布Treqi = zeros(M,1); PQi = zeros(M,1); PQi2 = zeros(M,1); PHij = zeros(M,N); PHij2 = zeros(M,1); betai = zeros(M,1);for nn = 1:MnnTIME = 100;NUM = 0;%中繼信道lemdalemda2 = 1/1000 + (1/100-1/1000)*rand(N,1);%1/1000 ~ 1/100的均勻分布for t = 1:TIMEfor i = 1:nn%步驟1:對次用戶業務服務質量所要求的PQi等進行初始化,即最小的不發生切換的概率PQi(i) = rand(1,1)/2;%步驟2:次用戶SUi的目標切換概率1-PQiPQi2(i) = 1 - PQi(i);%步驟3:計算次用戶在不同頻譜空洞上通信的實際切換概率PhijTreqi(i) = 10 + (300-10)*rand(1,1);for j = 1:NPHij(i,j) = 1-exp(-lemda(j)*Treqi(i));end%步驟4:根據Hi,找到切換概率和目標切換概率的差值最小的頻譜空洞jfor j = 1:NHs1(j) = abs(PQi(i) - exp(-lemda(j)*Treqi(i)));end%考慮中繼協作,CR用戶和中繼進行競爭,獲得最佳的II值。for j = 1:NPHij(i,j) = 1-exp(-lemda2(j)*Treqi(i));endfor j = 1:NHs2(j) = abs(PQi(i) - exp(-lemda2(j)*Treqi(i)));endHss = [Hs1,Hs2];[VV,II] = min(Hss);%步驟5:把頻譜控制j分配給對應的次用戶ilemdas = [lemda;lemda2];H(i) = Hss(II);%將最佳的空洞j分配給次用戶i%步驟6:計算次用戶SUi在頻譜空洞j上通信的不切換概率PHij2(i) =1-exp(-lemdas(II)*Treqi(i));%步驟7:比較1-Phij和PQi的大小,1-Phij > PQi,beta=0,則不需要預留頻譜空洞,1-Phij <=%PQi,beta不等于0,則需要頻譜預留if PHij2(i) > PQibetai(i) = 0;elsebetai(i) = 1+log(PQi(i))/lemdas(II)/Treqi(i); end%步驟8:計算對應的切換次數if betai(i) ~=0;NUM = NUM + 1;end endendPRO(nn) = NUM/TIME;end hold on plot(1:M,PRO,'k','Linewidth',2); PRO1 = PRO;Treqi = zeros(M,1); PQi = zeros(M,1); PQi2 = zeros(M,1); PHij = zeros(M,N); PHij2 = zeros(M,1); betai = zeros(M,1);for nn = 1:MnnTIME = 100;NUM = 0;for t = 1:TIMEfor i = 1:nn%步驟1:對次用戶業務服務質量所要求的PQi等進行初始化,即最小的不發生切換的概率PQi(i) = rand(1,1)/2;%步驟2:次用戶SUi的目標切換概率1-PQiPQi2(i) = 1 - PQi(i);%步驟3:計算次用戶在不同頻譜空洞上通信的實際切換概率PhijTreqi(i) = 10 + (300-10)*rand(1,1);for j = 1:NPHij(i,j) = 1-exp(-lemda(j)*Treqi(i));end%步驟4:根據Hi,找到切換概率和目標切換概率的差值最小的頻譜空洞jfor j = 1:NHs(j) = abs(PQi(i) - exp(-lemda(j)*Treqi(i)));end%步驟5:把頻譜控制j分配給對應的次用戶i[VV,II] = min(Hs);H(i) = Hs(II);%將最佳的空洞j分配給次用戶i%下面的步驟引入頻譜預留的思想,進行切換的改進%步驟6:計算次用戶SUi在頻譜空洞j上通信的不切換概率1-PhijPHij2(i) = 1-(1-exp(-lemda(II)*Treqi(i)));%步驟7:比較1-Phij和PQi的大小,1-Phij > PQi,beta=0,則不需要預留頻譜空洞,1-Phij <=%PQi,beta不等于0,則需要頻譜預留if PHij2(i) > PQibetai(i) = 0;elsebetai(i) = 1+log(PQi(i))/lemda(II)/Treqi(i); end%步驟8:計算對應的切換次數if betai(i) ~=0;NUM = NUM + 1;end endendPRO(nn) = NUM/TIME;end hold on plot(1:M,PRO,'b','Linewidth',2); PRO2 = PRO;Treqi = zeros(M,1); PQi = zeros(M,1); PQi2 = zeros(M,1); PHij = zeros(M,N); PHij2 = zeros(M,1); betai = zeros(M,1); for nn = 1:MnnTIME = 100;NUM = 0;for t = 1:TIMEfor i = 1:nn%步驟1:對次用戶業務服務質量所要求的PQi等進行初始化,即最小的不發生切換的概率PQi(i) = rand(1,1)/2;%步驟2:次用戶SUi的目標切換概率1-PQiPQi2(i) = 1 - PQi(i);%步驟3:計算次用戶在不同頻譜空洞上通信的實際切換概率PhijTreqi(i) = 10 + (300-10)*rand(1,1);for j = 1:NPHij(i,j) = 1-exp(-lemda(j)*Treqi(i));end%步驟4:根據Hi,找到切換概率和目標切換概率的差值最小的頻譜空洞jfor j = 1:NHs(j) = abs(PQi(i) - exp(-lemda(j)*Treqi(i)));end%步驟5:把頻譜控制j分配給對應的次用戶i[VV,II] = min(Hs);H(i) = Hs(II);%將最佳的空洞j分配給次用戶i%步驟6:計算次用戶SUi在頻譜空洞j上通信的切換概率PhijPHij2(i) = 1-(1-exp(-lemda(II)*Treqi(i)));%步驟6:計算對應的切換次數NUM = NUM+PHij2(i); endendPRO(nn) = NUM/TIME; end hold on plot(1:M,PRO,'r','Linewidth',2); PRO3 = PRO; xlabel('次用戶個數'); ylabel('切換次數'); legend('中繼協作基于最小概率的頻譜空洞預留算法','基于最小概率的頻譜空洞預留算法','基于最小概率的頻譜空洞匹配算法');save result1.mat M PRO1 PRO2 PRO34.操作步驟與仿真結論
?
5.參考文獻
[01]Wei Dang Lu, Student Member, IEEE, Yi Gong, Senior Member, IEEE, See Ho Ting, Member, IEEE, Xuan Li Wu, Member, IEEE, and Nai Tong Zhang. Cooperative OFDM Relaying for Opportunistic Spectrum Sharing: Protocol Design and Resource Allocation. IEEE TRANSACTIONS ON WIRELESS COMMUNICATIONS, VOL. 11, NO. 6, JUNE 2012
[02]Li-Chun Wang, Fellow, IEEE, Chung-Wei Wang, Student Member, IEEE, and Chung-Ju Chang, Fellow, IEEE. Modeling and Analysis for Spectrum Handoffs in Cognitive Radio Networks IEEE TRANSACTIONS ON MOBILE COMPUTING, VOL. 11, NO. 9, SEPTEMBER 2012
[03]Y. Shi and Y. T. Hou. Optimal power control for multi-hop software defined radio networks[R]. IEEE INFOCOM 2007.2007:1694-1702.
A01-84
6.完整源碼獲得方式
方式1:微信或者QQ聯系博主
方式2:訂閱MATLAB/FPGA教程,免費獲得教程案例以及任意2份完整源碼
總結
以上是生活随笔為你收集整理的【频谱分配】基于频谱空洞预留算法的频谱分配算法的matlab仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OFDM】基于simulink的OFD
- 下一篇: 【中继协助频谱切换】基于中继协助的频谱切