【频谱分配】基于频谱空洞预留算法的频谱分配算法的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份完整源码

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值