频谱分配基于频谱空洞预留算法的频谱分配算法的matlab仿真
Posted fpga&matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了频谱分配基于频谱空洞预留算法的频谱分配算法的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:M
nn
TIME = 100;
NUM = 0;
%中继信道lemda
lemda2 = 1/1000 + (1/100-1/1000)*rand(N,1);%1/1000 ~ 1/100的均匀分布
for t = 1:TIME
for i = 1:nn
%步骤1:对次用户业务服务质量所要求的PQi等进行初始化,即最小的不发生切换的概率
PQi(i) = rand(1,1)/2;
%步骤2:次用户SUi的目标切换概率1-PQi
PQi2(i) = 1 - PQi(i);
%步骤3:计算次用户在不同频谱空洞上通信的实际切换概率Phij
Treqi(i) = 10 + (300-10)*rand(1,1);
for j = 1:N
PHij(i,j) = 1-exp(-lemda(j)*Treqi(i));
end
%步骤4:根据Hi,找到切换概率和目标切换概率的差值最小的频谱空洞j
for j = 1:N
Hs1(j) = abs(PQi(i) - exp(-lemda(j)*Treqi(i)));
end
%考虑中继协作,CR用户和中继进行竞争,获得最佳的II值。
for j = 1:N
PHij(i,j) = 1-exp(-lemda2(j)*Treqi(i));
end
for j = 1:N
Hs2(j) = abs(PQi(i) - exp(-lemda2(j)*Treqi(i)));
end
Hss = [Hs1,Hs2];
[VV,II] = min(Hss);
%步骤5:把频谱控制j分配给对应的次用户i
lemdas = [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) > PQi
betai(i) = 0;
else
betai(i) = 1+log(PQi(i))/lemdas(II)/Treqi(i);
end
%步骤8:计算对应的切换次数
if betai(i) ~=0;
NUM = NUM + 1;
end
end
end
PRO(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:M
nn
TIME = 100;
NUM = 0;
for t = 1:TIME
for i = 1:nn
%步骤1:对次用户业务服务质量所要求的PQi等进行初始化,即最小的不发生切换的概率
PQi(i) = rand(1,1)/2;
%步骤2:次用户SUi的目标切换概率1-PQi
PQi2(i) = 1 - PQi(i);
%步骤3:计算次用户在不同频谱空洞上通信的实际切换概率Phij
Treqi(i) = 10 + (300-10)*rand(1,1);
for j = 1:N
PHij(i,j) = 1-exp(-lemda(j)*Treqi(i));
end
%步骤4:根据Hi,找到切换概率和目标切换概率的差值最小的频谱空洞j
for j = 1:N
Hs(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-Phij
PHij2(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) > PQi
betai(i) = 0;
else
betai(i) = 1+log(PQi(i))/lemda(II)/Treqi(i);
end
%步骤8:计算对应的切换次数
if betai(i) ~=0;
NUM = NUM + 1;
end
end
end
PRO(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:M
nn
TIME = 100;
NUM = 0;
for t = 1:TIME
for i = 1:nn
%步骤1:对次用户业务服务质量所要求的PQi等进行初始化,即最小的不发生切换的概率
PQi(i) = rand(1,1)/2;
%步骤2:次用户SUi的目标切换概率1-PQi
PQi2(i) = 1 - PQi(i);
%步骤3:计算次用户在不同频谱空洞上通信的实际切换概率Phij
Treqi(i) = 10 + (300-10)*rand(1,1);
for j = 1:N
PHij(i,j) = 1-exp(-lemda(j)*Treqi(i));
end
%步骤4:根据Hi,找到切换概率和目标切换概率的差值最小的频谱空洞j
for j = 1:N
Hs(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上通信的切换概率Phij
PHij2(i) = 1-(1-exp(-lemda(II)*Treqi(i)));
%步骤6:计算对应的切换次数
NUM = NUM+PHij2(i);
end
end
PRO(nn) = NUM/TIME;
end
hold on
plot(1:M,PRO,'r','Linewidth',2);
PRO3 = PRO;
xlabel('次用户个数');
ylabel('切换次数');
legend('中继协作基于最小概率的频谱空洞预留算法','基于最小概率的频谱空洞预留算法','基于最小概率的频谱空洞匹配算法');
save result1.mat M PRO1 PRO2 PRO3
4.操作步骤与仿真结论
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仿真的主要内容,如果未能解决你的问题,请参考以下文章
基于凸优化的动态频谱分配算法matlab仿真,凸优化采用CVX工具箱,介绍CVX工具箱的使用方法。
OFDM通信基于matlab OFDM多用户资源分配仿真含Matlab源码 1902期