%基于贝叶斯准则的信号检测(在假设Hj为真的先验概率P(Hj)(j=0,1)已知,各种判决的代价因子cij(i,j= 0,1)指定的情况
%下,使平均代价C最小的信号状态统计检测准则,称为贝叶斯检测准则)
clc
clear
%%
%设定参数
%%
M=50;%重复实验次数
N=50;%每次实验观测次数
k=10;%每次观测取样点数
s0=0;%不发送信号
a=1;
s1=a;%发送幅值为a的信号
j=0;%高斯噪声均值
f=2;%高斯噪声方差
PH0=0.3;PH1=1-PH0;%已知先验概率
%%
%基于贝叶斯准则
c1_00=0;%代价因子
c1_11=2;
c1_10=2;
c1_01=3;
h1=PH0*(c1_10-c1_00)/(PH1*(c1_01-c1_11));%似然比检测门限
ha1=f/(k*a)*log(h1)+a/2;%检测门限
p1_10=zeros(1,M);%虚警概率
p1_11=zeros(1,M);%检测概率
%%
%基于最小平均错误概率
c2_00=0;%代价因子
c2_11=0;
c2_10=1;
c2_01=1;
h2=PH0*(c2_10-c2_00)/(PH1*(c2_01-c2_11));%似然比检测门限
ha2=f/(k*a)*log(h2)+a/2;%检测门限
p2_10=zeros(1,M);%虚警概率
p2_11=zeros(1,M);%检测概率
%%
%基于最大后验概率
c3_00=1;%代价因子
c3_11=2;
c3_10=3;
c3_01=4;
h3=PH0*(c3_10-c3_00)/(PH1*(c3_01-c3_11));%似然比检测门限
ha3=f/(k*a)*log(h3)+a/2;%检测门限
p3_10=zeros(1,M);%虚警概率
p3_11=zeros(1,M);%检测概率
%%
%计算
for i=1:M
n1_0=0;%在未发送信号情况下,观测到信号的次数
n1_1=0;%在发送信号情况下,观测到信号的次数
n2_0=0;
n2_1=0;
n3_0=0;
n3_1=0;
for i1=1:N
n=sqrt(f)*randn(1,k)+j;%产生噪声
x0=s0+n;%不发送信号时的观测值
x1=s1+n;%发送信号时的观测值
m0=sum(x0)/k;%不发送信号时的检验统计量
m1=sum(x1)/k;%发送信号时的检验统计量
%%
%基于贝叶斯准则
if m0>ha1 %在未发送信号情况下,观测到信号
n1_0=n1_0+1;
end
if m1>ha1 %在发送信号情况下,观测到信号
n1_1=n1_1+1;
end
%%
%基于最小平均错误概率
if m0>ha2 %在未发送信号情况下,观测到信号
n2_0=n2_0+1;
end
if m1>ha2 %在发送信号情况下,观测到信号
n2_1=n2_1+1;
end
%%
%基于最大后验概率
if m0>ha3 %在未发送信号情况下,观测到信号
n3_0=n3_0+1;
end
if m1>ha3 %在发送信号情况下,观测到信号
n3_1=n3_1+1;
end
end
p1_10(i)=n1_0/N;%计算检测概率
p1_11(i)=n1_1/N;%计算虚警概率
p2_10(i)=n2_0/N;
p2_11(i)=n2_1/N;
p3_10(i)=n3_0/N;
p3_11(i)=n3_1/N;
end
%%
%计算平均代价
C1=PH0*(c1_00.*(1-p1_10)+c1_10.*p1_10)+PH1*(c1_11.*p1_11+c1_01.*(1-p1_11));%基于贝叶斯准则
C2=PH0*(c2_00.*(1-p2_10)+c2_10.*p2_10)+PH1*(c2_11.*p2_11+c2_01.*(1-p2_11));%基于最小平均错误概率
C3=PH0*(c3_00.*(1-p3_10)+c3_10.*p3_10)+PH1*(c3_11.*p3_11+c3_01.*(1-p3_11));%基于最大后验概率
%%
%绘制仿真检测结果
figure
xx=1:M;
plot(xx,p1_10,'b-o');hold on
plot(xx,p1_11,'b-*');hold on
plot(xx,p2_10,'g-o');hold on
plot(xx,p2_11,'g-*');hold on
plot(xx,p3_10,'r-o');hold on
plot(xx,p3_11,'r-*');hold on
text(M/2,0.3,'虚警概率');
text(M/2,0.8,'虚警概率')
text(M/4,0.5,'蓝色曲线为基于贝叶斯准则的结果;橙色曲线为基于最小平均错误概率和基于最大后验概率的结果(两种检测结果相同)')
title('检测概率和漏警概率')
xlabel('实验次数'),ylabel('概率大小');
%%
figure
plot(xx,C1,'b-*');hold on
plot(xx,C2,'g-*');hold on
plot(xx,C3,'r-*');hold on
text(M/2,1.45,'基于贝叶斯准则');
text(M/2,0.2,'基于最小平均错误概率');
text(M/2,2.1,'基于最大后验概率');
title('平均代价')
xlabel('实验次数'),ylabel('平均代价大小');