认知无线电频谱切换源码matlab仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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