m基于3GPP-LTE通信网络的认知家庭网络Cognitive-femtocell性能matlab仿真

1.算法概述

本系统所涉及到的几个主要模块,具体有如下几个模块:


A. Simulation Flow:仿真流程


B. Initialization:初始化


C. Mobility Model:移动模型


D. Traffic Model:流量模型


E. Propagation Model:信号传输模型


F. Multipath Model:多径模型


G. SINR Calculation:SINR值计算模型


H. Link Level Quality Estimation:链路级质量评价


I. Scheduling:系统调度


根据Path Loss Model: The path loss between a macro BS and a MS is characterized can be calculated as follows:




这里,R的值表示发送到接收的距离,单位为“米”,Low是表示户外墙壁的衰减,通常这个值为10dB或者20dB。


2.仿真效果预览

matlab2022a仿真


基于Femtocell的频谱感知算法的仿真


3.MATLAB部分代码预览

Pd01         = zeros(1,length(SNR));%自适应双阈值

Pd02         = zeros(1,length(SNR));%自适应单阈值

Pd03         = zeros(1,length(SNR));%固定阈值

%虚警概率  

Pf01         = zeros(1,length(SNR));%自适应双阈值

Pf02         = zeros(1,length(SNR));%自适应单阈值

Pf03         = zeros(1,length(SNR));%固定阈值

%漏检概率  

Pm01         = zeros(1,length(SNR));%自适应双阈值

Pm02         = zeros(1,length(SNR));%自适应单阈值

Pm03         = zeros(1,length(SNR));%固定阈值


%通过蒙特卡洛仿真思想,对每组噪声情况的数据仿真多次

Stimes       = 20;

%模拟实际中的频谱感知信号    

Per_signal   = func_Signal_gen();


Len_Per_sig  = length(Per_signal);

%信号功率

signal_power = 6225.6;

%定义信号长度

Signal_Len   = 2048;

%检测周期

Check_cycle  = 40;

Scycle       = 8;

%虚警概率        

Pfa          = 0.3;   


for i = 1 : length(SNR)

index = index + 1;


%通过蒙特卡洛仿真

for m=1:1:Stimes

i

m


%模拟实际中的频谱感知信号    

Per_signal   = func_Signal_gen();

%产生噪声

noise = func_noise_gen(signal_power,SNR(i),Signal_Len);                      

%随机占用信道   

%改变伪随机序列长度,随机改变主用户的占用情况

%在一般情况下,假设每个被占用的信道,所传送的是没有衰减的信号

%在考虑femto的时候,考虑femto和macro之间的衰落,每个被占用的信道的衰减也是不同的

%所以在被占用的信道之前乘以一个随机的衰减系数

for m1=1:Scycle                                                       

for n1=1:Scycle                                

if (scrambler(m1,n1)==1)                         

%伪随机码为1,占用信道;

Per_signal_noise(1,(Len_Per_sig*(n1-1)+1):Len_Per_sig*n1) =rand(1,1)*Per_signal + noise;        

else   

%伪随机码为0,未占用信道

Per_signal_noise(1,(Len_Per_sig*(n1-1)+1):Len_Per_sig*n1) = noise;           

end

end

end


%检测出哪些信道被干扰范围之内的宏系统用户所应用,从而避开这些信道。

noise_under_check      = noise(1,1:Signal_Len);

Per_signal_under_check = Per_signal(1,1:Signal_Len);

%下面开始检测是否收到干扰

%噪声检测

[Check_noise,threshold]  = func_check(noise_under_check,Check_cycle);

Check_noise=abs(Check_noise);   



%进行信号检测                                                

for j=1:Scycle

%检测被干扰的信道是否被用户所用

Per_signal_under_check(1,1:Signal_Len)= Per_signal_noise(1,(Signal_Len*(j-1)+1):Signal_Len*j);             

[check_signal,threshold]=func_check(Per_signal_under_check,Check_cycle);

check_signal_abs(j,m)=abs(check_signal);  

end  


%自适应门限计算                                    

adap_thres(m)        = Check_noise*sqrt(2*log10(1./Pfa));

%自适应双门限                                              

adap_thres_double(m) = 0.2*Check_noise(1,:)/sqrt(2*log10(1./Pfa));

%固定门限

thresholds(m)        = threshold;

end  





%进行判决

[Num_Pd_01,Num_Pm_01,Num_Pf_01] = func_check_level(check_signal_abs,mean(adap_thres_double),scrambler);  % 自适应双阈值的判决

[Num_Pd_02,Num_Pm_02,Num_Pf_02] = func_check_level(check_signal_abs,mean(adap_thres)       ,scrambler);  % 自适应单阈值的判决

[Num_Pd_03,Num_Pm_03,Num_Pf_03] = func_check_level(check_signal_abs,mean(thresholds)       ,scrambler);  % 固定阈值的判决  



%判决统计

%检测概率   

Pd01(index)=Num_Pd_01/(20);   % 自适应双阈值

Pd02(index)=Num_Pd_02/(20);   % 自适应单阈值

Pd03(index)=Num_Pd_03/(20);   % 固定阈值  


%漏检概率

Pm01(index)=Num_Pm_01/(20);  % 自适应双阈值

Pm02(index)=Num_Pm_02/(20);  % 自适应单阈值    

Pm03(index)=Num_Pm_03/(20);  % 固定阈值         


%虚警概率

Pf01(index)=Num_Pf_01/(20);   % 自适应双阈值

Pf02(index)=Num_Pf_02/(20);   % 自适应单阈值

Pf03(index)=Num_Pf_03/(20);   % 固定阈值   

end


%检测概率  

Pd11=sort(averge(Pd01,length(SNR)));

Pd12=sort(averge(Pd02,length(SNR)));

Pd13=sort(averge(Pd03,length(SNR)));

%虚警概率

Pf11=(sort(averge(Pf01,length(SNR))));

Pf12=(sort(averge(Pf02,length(SNR))));

Pf13=(sort(averge(Pf03,length(SNR))));

%漏检概率

Pm11=fliplr(sort(averge(Pm01,length(SNR))));

Pm12=fliplr(sort(averge(Pm02,length(SNR))));

Pm13=fliplr(sort(averge(Pm03,length(SNR))));



%正确的检测概率

figure;

plot(SNR,Pd11,'r-*',SNR,Pd12,'b-^',SNR,Pd13,'k-o')

legend('自适应双门限','自适应单门限','固定门限')

xlabel('SNR')                

ylabel('Pd')  

title('正确检测概率图');

grid on;  


%虚警概率

figure;

plot(SNR,Pf11,'r-*',SNR,Pf12,'b-^',SNR,Pf13,'k-o')

legend('自适应双门限','自适应单门限','固定门限')

xlabel('SNR')                

ylabel('Pf')  

title('虚警概率图');

grid on


%漏检概率

figure;

plot(SNR,Pm11,'r-*',SNR,Pm12,'b-^',SNR,Pm13,'k-o')

legend('自适应双门限','自适应单门限','固定门限')

xlabel('SNR')                

ylabel('Pm')  

title('漏检概率图');

grid on


%ROC

figure;

plot(Pf11,Pd11,'r-*')


xlabel('Pf')                

ylabel('Pd')  

title('ROC');

grid on

01-42m

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容