基于多信道协作中继的频谱预留切换机制的相关仿真

1.问题描述:

 

 

2.部分程序:

 

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
 

3.仿真结论:

       基于频谱空洞预留算法的频谱分配算法具有最优服务质量和最少的切换的次数,基于频谱空洞预留算法的频谱分配算法性能优于基于最小化切换概率的频谱匹配算法,优于传统的基于切换概率的频谱匹配算法。

 

A01-84

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fpga和matlab

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

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

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

打赏作者

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

抵扣说明:

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

余额充值