close all;
clear all;
clc;
u=5; %u=TW 时间带宽乘积
N=2*u;
MC=5; %蒙特卡罗仿真次数
snr=15;
snr_real = power(10, snr/10);
for i=1:50
%设定门限进行仿真
Th=i;
H0(i)=0;
H1(i)=0;
%首先得到理论值
Pf_the(i)=1-gammainc(Th/2,u);
Pd_the(i)=marcumq(sqrt(2*snr_real), sqrt(Th), u);
%检测没有信号存在的情况
for k=1:MC
noise=randn(1,N);
recv=noise;
recv_power=sum(abs(recv.^2));
if recv_power>Th
H0(i)=H0(i)+1;
end
end
%检测信号存在的情况
for k=1:MC
t=(k-1)*N+1:k*N;
t=1:1:N;
s= sin(2*pi*t/N+pi/6);
noise=randn(1, N);
signal=s*sqrt(2*snr_real/sum(s.^2));
recv=signal+noise;
recv_power=sum(abs(recv.^2));
if recv_power>Th
H1(i)=H1(i)+1;
end
end
Pf_sim(i)=H0(i)/MC;%虚警概率
Pd_sim(i)=H1(i)/MC;%检测概率
end
figure
loglog(Pf_the,1-Pd_the,'*r');
hold on
loglog(Pf_sim,1-Pd_sim,'-r');
title('Complementary ROC of ED over different channels')
grid on
axis([0.0001,1,0.0001,1]);
xlabel('Pf');
ylabel('Pm');
legend('awgn theory','awgn sim');