% fig3,E=30dB时的 outage
% ??????上面两个曲线偏低。
%?????? simulation
clc
clf
clear all
close all
E_dB=30;
E=10.^(0.1*E_dB);
v=4;
d1=0.1:0.01:0.9;
omiga_h=d1.^(-v);
omiga_f=(1-d1).^(-v);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
r=0.4;
R=r*log2(1+E);
P1=1-exp(-2*(omiga_h+omiga_f).*(2.^R-1)./(E*omiga_h.*omiga_f));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
len=length(d1);
sum_af=zeros(1,len);
N=30000; % 仿真次数
for l=1:len
h=sqrt(omiga_h(l)/2).*(randn(N,1)+j*randn(N,1)); %h=normrnd(0,omiga_h(l)/2)+j*normrnd(0,omiga_h(l)/2);
f=sqrt(omiga_f(l)/2).*(randn(N,1)+j*randn(N,1)); % f=normrnd(0,omiga_f(l)/2)+j*normrnd(0,omiga_f(l)/2);
gamma1=E*abs(h).^2.*abs(f).^2 ./(2*abs(h).^2+abs(f).^2);
gamma2=E*abs(h).^2.*abs(f).^2 ./(2*abs(f).^2+abs(h).^2);
I1=1/2*log2(1+gamma1);
I2=1/2*log2(1+gamma2);
for i=1:N
if(I1(i)<R/2 | I2(i)<R/2)
sum_af(l)=sum_af(l)+1;
end
end
sum_af(l) = sum_af(l)/N;
end
P1_simu=sum_af;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
r=0.3;
R=r*log2(1+E);
P2=1-exp(-2*(omiga_h+omiga_f).*(2.^R-1)./(E*omiga_h.*omiga_f));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
len=length(d1);
sum_af=zeros(1,len);
N=25000; % 仿真次数
for l=1:len
h=sqrt(omiga_h(l)/2).*(randn(N,1)+j*randn(N,1)); %h=normrnd(0,omiga_h(l)/2)+j*normrnd(0,omiga_h(l)/2);
f=sqrt(omiga_f(l)/2).*(randn(N,1)+j*randn(N,1)); % f=normrnd(0,omiga_f(l)/2)+j*normrnd(0,omiga_f(l)/2);
gamma1=E*abs(h).^2.*abs(f).^2 ./(2*abs(h).^2+abs(f).^2);
gamma2=E*abs(h).^2.*abs(f).^2 ./(2*abs(f).^2+abs(h).^2);
I1=1/2*log2(1+gamma1);
I2=1/2*log2(1+gamma2);
for i=1:N
if(I1(i)<R/2 | I2(i)<R/2)
sum_af(l)=sum_af(l)+1;
end
end
sum_af(l) = sum_af(l)/N;
end
P2_simu=sum_af;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
R=1;
P3=1-exp(-2*(omiga_h+omiga_f).*(2.^R-1)./(E*omiga_h.*omiga_f));
%%%%%% exact %%%%%%%%%%%%
len=length(d1);
sum_af=zeros(1,len);
N=25000; % 仿真次数
for l=1:len
h=sqrt(omiga_h(l)/2).*(randn(N,1)+j*randn(N,1)); %h=normrnd(0,omiga_h(l)/2)+j*normrnd(0,omiga_h(l)/2);
f=sqrt(omiga_f(l)/2).*(randn(N,1)+j*randn(N,1)); % f=normrnd(0,omiga_f(l)/2)+j*normrnd(0,omiga_f(l)/2);
gamma1=E*abs(h).^2.*abs(f).^2 ./(2*abs(h).^2+abs(f).^2);
gamma2=E*abs(h).^2.*abs(f).^2 ./(2*abs(f).^2+abs(h).^2);
I1=1/2*log2(1+gamma1);
I2=1/2*log2(1+gamma2);
for i=1:N
if(I1(i)<R/2 | I2(i)<R/2)
sum_af(l)=sum_af(l)+1;
end
end
sum_af(l) = sum_af(l)/N;
end
P3_simu=sum_af;
%%
semilogy(d1,P1,'r')
hold on
grid on
semilogy(d1,P2,'g')
semilogy(d1,P3,'b')
semilogy(d1,P1_simu,'r--')
semilogy(d1,P2_simu,'g--')
semilogy(d1,P3_simu,'b--')