目录
本系统所涉及到的几个主要模块,具体有如下几个模块:
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。
matlab2022a仿真


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



- 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
V