1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y5mXlplt
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
认知无线电(CR)的概念来自Joseph Mitolo博士1999年的开创性工作。它自适应地调整内部通信机制,通过学习,了解等实时变化特定的无线电操作参数(功率,载波调制和编码等),适应外部无线电环境,并独立空闲频谱它可以被搜索和使用。这有助于用户选择用于无线传输的最佳和最合适的服务,甚至允许基于现有或未来的无线电资源来延迟甚至主动地开始传输。
4.部分源码
for m=1:M
pl_cu_pu(1,m)=((loc_cu(m,1)-loc_pu(1,1))^2+(loc_cu(m,2)-loc_pu(1,2))^2)^0.5;
end
pl_cu_pu=10^(0.1*randn*Sigma)./((pl_cu_pu/3).^Eta); %产生主用户和认知用户的路径损耗
pl_cu_cbs=10^(0.1*randn*Sigma)./((pl_cu_cbs/3).^Eta); %产生用户和认知基站的路径损耗
for m=1:M
for i=1:M
pl_cu_cu(m,i)=((loc_cu(m,1)-loc_cu(i,1))^2+(loc_cu(m,2)-loc_cu(i,2))^2)^0.5;
end
end
pl_cu_cu=10^(0.1*randn*Sigma)./((pl_cu_cu/3).^Eta); %产生认知用户和认知用户之间的路径损耗
%对主用户干扰
to_pu_g=raylrnd(1,[M,N]); %对主用户的信道干扰增益(第m行是第m个小f中各个子载波的增益)
lamda=zeros(1,N); %对主用户距离干扰增益
Distance=zeros(1,N); %第n个子载波和主用户的频带距离
for n=1:N
Distance(1,n)=((N-(2*n-1)/2)*Delta_f+W/2);
end
F=@(f)((sin(pi*Ts*f)./(pi*Ts*f)).^2); %积分函数
for n=1:N %Lamda计算
lamda(1,n)=Ts*quad(F,(Distance(1,n)-W/2),(Distance(1,n)+W/2));
end
for m=1:M
for n=1:N
to_pu_g(m,n)=to_pu_g(m,n)*lamda(1,n); %对主用户的总的干扰增益
end
end
for m=1:M
to_pu_g(m,:)=to_pu_g(m,:)*pl_cu_pu(1,m);
end
%同频相互干扰
co_ch_g=zeros(M,M,N); %同频干扰矩阵,第n页是第n个子载波的同频干扰
for n=1:N
for i=1:M
for j=i:M %若要不同的同频干扰,则这里改为1:M
co_ch_g(i,j,n)=raylrnd(1);
co_ch_g(j,i,n)=co_ch_g(i,j,n);
end
end
end
for n=1:N
for m=1:M
co_ch_g(m,m,n)=0;
end
end
for n=1:N
co_ch_g(:,:,n)=(co_ch_g(:,:,n).^2).*pl_cu_cu;
end
for n=1:N
for i=1:M
co_ch_g(i,i,n)=0;
end
end
%—有关各个子载波的信道增益——
ch_g=raylrnd(1,[M,N]); %每个子载波的信道增益
for m=1:M
ch_g(m,:)=(ch_g(m,:).^2)*pl_cu_cbs(1,m);
end
%===—有关运算结果显示=====二=
rate_gen1=zeros(1,genMax); %每代的最优速率
rate_gen2=zeros(1,genMax); %每代的最优速率
%rate_gen3=zeros(1,generaMax); %每代的最优小速率
ratio_gen1=zeros(1,genMax); %每代的最优速率功率比
ratio_gen2=zeros(1,genMax); %每代的最优速率功率比
%ratio_gen3=zeros(1,genMax); %每代的最优速率功率比
Pth=10;
for Ith=[0.001 0.005 0.01]
for qq=1:10
%=========程序初始化========
temp_antibody(:)=Pth/N; %初始抗体功率是平均分配
temp_memorycell(:)=Pth/N; %初始记忆细胞功率也是平均分配
antibody(:)=temp_antibody(:); %抗体变量装入初始抗体
memorycell(:)=temp_memorycell(:); %记忆细胞变量装入记忆细胞
%=========主函数=========
for gen=1:genMax
gen
%记忆细胞添加
antibody(:,:,(K-L+1):K)=memorycell;
%antibody_falg((K-L+1):K)=1; %记录成型抗体
%——抗体合格检测
exceed_Ith=0; %超过干扰门限的量
exceed_Pth=0; %超过功率门限的量
decr_var_I=zeros(M,N); %有关干扰的归一化的减少量
decr_val_P=zeros(M,N); %有关功率的归一化的减少量
ratio_P=zeros(1,3); %计算当前功率与公平性的比值
standerd_site=0; %作为基准的用户
for k=1:K
decr_val_P=antibody(:,:,k)/sum(sum(antibody(:,:,k))); %根据现有功率计算归一化功率减少量
if(sum(sum(antibody(:,:,k)))-Pth>eps)
exceed_Pth=sum(sum(antibody(:,:,k)))-Pth; %计算超出多少
antibody(:,:,k)=antibody(:,:,k)-exceed_Pth*decr_val_P(:,:);
end
itfere_pu(:,:,k)=to_pu_g.*antibody(:,:,k);
decr_val_I=itfere_pu(:,:,k)/sum(sum(itfere_pu(:,:,k))); %根据现有干扰计算归一化功率减少量
if(sum(sum(itfere_pu(:,:,k)))-Ith>eps)
exceed_Ith=sum(sum(itfere_pu(:,:,k)))-Ith; %计算超出多少
antibody(:,:,k)=antibody(:,:,k)-(exceed_Ith*decr_val_I)./(to_pu_g);
end
itfere_pu(:,:,k)=to_pu_g.*antibody(:,:,k); %更新对主用户的干扰
end
end
A108