认知无线电频谱切换源码matlab仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

clear

clc

%rand('twister',1);

blockpu=[];

blocksu=[];

for N=3:2:7

block=[];

for lambdap =0.01:0.05:0.5

%*****************************************

%假设 1. CR网络和主网络(授权网络)共同存在于同一区域,并且使用同一频段。假设该频段共有N个信道,每个主用户或CR用户每次接入只占用一个信道。

% 若所有信道均被主用户占用,此时CR用户到达就被阻塞。若CR用户正在使用的信道有主用户出现,此时CR用户被迫中断,并进入缓存区排队等待

% 空闲可用信道以继续刚被中断的通信,若等待超过一定时限,则判定CR用户强制中断退离缓存区。

% 故共有三个队列,分别表示如下:

% X队列——主用户队列,抢占优先,优先级最高

% Y队列——次用户队列,优先级最低

% Z队列——次用户切换队列,优先级次高,若在时延Tao内,则较次用户队列优先接入可用信道

% 2. 主用户和次用户的到达服从泊松分布,参数分别为lambdap和lambdas,平均服务时间服从参数为mup和mus的负指数分布

% 3. 对次用户而言,主用户抢占优先。总共有N个信道,也就是最多可以有N个主用户抢占所有信道,

% 故Z队列的长度不会超过N,这里给定Z队列长度为N。

% 4. 假设初始状态所有N个信道均空闲,次用户理想感知,感知延时为0.005

%*****************************************

% 2009年10月12日10月25日

%*****************************************

%初始化

%*****************************************

a = 100; %主用户数量

b = 100; %次用户数量

%N =3 %Z队列最大长度/总的信道数

%Tao=5

%切换时延门限Tao

A = [ ]; %某主用户到达时刻占用信道序号的集合

B = [ ]; %某次用户到达时刻占用信道序号的集合

C = [ ]; %切换用户占用的当前所有信道序号集合

D = [ ]; %某次用户到达时刻主用户占用信道集合

member = [ ];

member_CR = [ ];

j1=1;

%主用户参数*****************************************

%lambdap = 0.3; %主用户到达率

mup =0.4; %主用户服务率

arr_meanp = 1/lambdap; %主用户平均到达时间

ser_meanp = 1/mup;%主用户平均服务时间

arr_nump = a; %round(Total_time*lambdap*2);

tp = zeros(6,arr_nump);

tp(1,:) = exprnd(arr_meanp,1,arr_nump); %按负指数分布产生各主用户到达时间间隔

tp(1,:) = cumsum(tp(1,:)); %各主用户的到达时刻等于时间间隔的累积和

tp(2,:) = exprnd(ser_meanp,1,arr_nump); %按负指数分布产生各主用户服务时间

%次用户参数*****************************************

lambdas =0.4;

mus =0.6; %次用户到达率与服务率

arr_means = 1/lambdas;

ser_means = 1/mus; %次用户平均到达时间与平均服务时间

arr_nums = b;

ts = zeros(6,arr_nums);

ts(1,:) = exprnd(arr_means,1,arr_nums); %按负指数分布产生各次用户达到时间间隔

ts(1,:) = cumsum(ts(1,:)); %各次用户的到达时刻等于时间间隔的累积和

ts(2,:) = exprnd(ser_means,1,arr_nums); %按负指数分布产生各次用户服务时间

%切换用户参数*****************************************待计算lambdah和muh arr_numh = 10; %切换用户排队长度设置

th = zeros(6,arr_numh);

tsh=[];

%*****************************************

%计算第1个主用户的信息

%*****************************************

if arr_nump>=1

tp(3,1) = 0; %第1个主用户进入系统后直接接受服务,无需等待

n = ceil(rand*N); %产生一个在N范围内的随机数作为接入的信道序号

tp(4,1) = tp(1,1)+tp(2,1); %其离开时刻等于其到达时刻与服务时间之和

tp(5,1) = 1; %其肯定被系统接纳,此时系统内共有1个主用户,故标志位置1

tp(6,1) = n; %依次记录主用户占用信道的序号

A=[A n];

member = [1]; %其进入系统后,系统内已有成员序号为1

else

!echo No Primary Users

end

%*****************************************

if arr_nums>=1

if arr_nump>=1

k1 = sum(ts(1,:) < tp(1,1));

if k1~=0

for i =1:k1

if i==1

相关文档
最新文档