统计信号处理
实验一
学号:f
姓名:
东南大学信息科学与工程学院
2015.5.15
一、实验目的:
1、掌握噪声中信号检测的方法;
2、熟悉Matlab 的使用;
3、掌握用计算机进行数据分析的方法。
二、实验原理
1、先产生信号s(t),n(t),x(t),t=0,1,……199(ms);
2、根据定义似然比函数:10(|)
()(|)
p x H x p x H Λ=
,门限001()()P H P H Λ=;
如果0)(Λ>Λx ,则判定1D ;否则,判定0D 。 假设似然比为x ,根据似然比检测准则:
在某取样率的条件下,假设在、,,…,时间点上取样得到的随机变量分布为,,…,。
似然比函数为:
相应的似然比判别准则为:
时判断,否则判定
其中的是判决门限,它根据使用的判决准则确定具体的数值。 3、 Bayes 判决准则如下: 准则或风险函数:
),(),(),(),(1111000010010110H D P C H D P C H D P C H D P C R +++=
其中的诸系数XX C 是根据实际需要设定的风险系数。
[][])
()
()|()|(111010001001H P C C H P C C H x p H x p -->时判1D ,否则判0
D 。 已知有信号到达的概率P(H1)=0.6,没有信号到达的概率P(H0)=0.4,210=C ,101=C 。 由此计算判决门限为(2*0.4)/(1*0.6)=4/3。
对信号是否到达进行检测;
122
1
10
14()()*ln 23
N
N i
i i H s i x
s i H ==>+σ<∑∑ t t t ?+t t ?+2t N t ?+1x 2x N x ()()
()∑
==
Λ=-N
i i i i n s s x N N N e H x x x p H x x x p x x x 1
2221
02112121|,...,,|,...,,),...,,(σ()∑+Λ>∑==N i i n
N
i i i s s x 1
2
02
1
21ln σ1D 0D 0Λ
4、通过计算机产生的仿真数据分别对以上两种方法下的检测概率
P、误警概率f P、漏
d
警概率
P和Bayes风险进行仿真计算:
m
共做5000次统计:在x(t)=s(t)+n(t)的情况下,记录检测到信号的次数和未检测到信号的次数,并记录。
5、用同上的方法,改变判决的门限,观察检测方法的
P、f P、m P和Bayes风险的变
d
化;
6、用同上的方法,改变噪声的方差,观察检测方法的
P、f P、m P和Bayes风险的变
d
化;
7、改变取样间隔,然后再来观察似然比检测方法的
P、f P、m P和Bayes风险;
d
8、设计一个匹配滤波器,观察信号经过滤波器后的输出变化
三、实验内容与结果分析:
得到的原信号s(t)
1、利用似然比检测方法(最小错误概率准则),对信号是否到达进行检测;
下图为产生的信号的波形图:
得到的一个信号被检测到的次数为:
2、 假设102C =,011C =。利用基于Bayes 准则的检测方法,对信号是否到达进行检测;
得到的一个信号被检测到的次数为:
分析:检测到信号的概率比最大似然比方法检测到信号的概率低。
3、 通过计算机产生的仿真数据,对两种方法的检测概率d P 、虚警概率f P 、漏警概率
m P 和Bayes 风险进行仿真计算;
(1) 似然比检测方法
得到的一个结果为:
(2) 通过计算机产生的仿真数据,基于Bayes 准则的检测方法的检测概率 、虚警概
率 、漏警概率和Bayes 风险进行仿真计算
检测概率Pd, 漏警概率Pm,虚警概率Pf,Bayes 风险分别为:
分析:。和似然比检测方法对比,检测概率更小,漏警概率更高,虚警概率减小 通过改变P(H 1)和P(H 0)来改变判决的门限(风险系数10C 和01C 不变),观察检测方法
的d P 、f P 、m P
和Bayes 风险的变化; 1)似然比检测
当PH0=0.4,PH1=0.6时
当PH0=0.5,PH1=0.5时
可以看到当PH0/PH1增大时检测概率减小,漏警概率增大,虚警概率减小
2)基于Bayes 准则的检测
① 当PH0=0.4,PH1=0.6时,
② 当PH0=0.5,PH1=0.5
由数据可以看出当PH0/PH1增大时,检测概率减小,漏警概率增大,虚警概率减小,风险减小
4、 改变噪声的方差,观察检测方法的d P 、f P 、m P 和Bayes 风险的变化; 1)似然比检测 ①当方差为9时
②当方差为16时
③当方差为25时
可以看出检测概率减小,漏警概率增大,虚警概率增大
2)基于Bayes准则的检测
①当方差为9时
②当方差为16时
③当方差为25时
分析:随着噪声方差的升高,检测概率降低,漏警概率升高,虚警概率升高,风险升高。漏警概率的升高和虚警概率的升高直接导致风险变大。
5、将信号取样间隔减小一倍,观察各值的变化
1)取样200
2)取样400
各个概率值都有所减小
6、设计一个滤波器
①信号和经过滤波器的原信号
②收信号和经过滤波器的接收信号
③噪声信号和经过滤波器的噪声信号
三、源程序
%产生检测信号
t1=0:49;
s1=t1/50;
t2=50:149;
s2=-t2/50+2;
t3=150:199;
s3=t3/50-4;
s=[s1,s2,s3]; %产生信号三角波
p0=0.4;
p1=0.6;
for t=1:200 %取0ms到199ms的抽样值画图时,去掉这一行n1=5.*randn(1,200); %产生噪声,此处5为标准差
x=s+n1;%产生含有噪声的信号
figure(1);
subplot(2,1,1); %画图
plot(s);%画出不附加噪声的三角波信号
xlabel('t');%单位ms
ylabel('s');
title('信号 s(t)');
grid on;
subplot(2,1,2);
plot(n1);%画出噪声信号
xlabel('t');
ylabel('n1');
title('噪声信号n1(t)');
grid on;
figure(2);
subplot(2,1,1);
plot(x);%画出附加噪声的三角波信号
xlabel('t');
ylabel('x');
title('接收信号x(t)');
grid on;
%1.利用似然比检测方法(最小错误概率准则),对信号是否到达进行检测
x1=x.*s;
x2=s.*s;
if 2*sum(x1)-sum(x2)>2*25*log(p0/p1) %判断准则
tally1(t)=1; %检测到信号
'未检测到信号';
else
tally1(t)=0; %未检测到信号
'检测到信号';
end;
end; %画图时,去掉这一行
ADD1=sum(tally1);
'Number of arrival signal based on maximum likelihood method:';
ADD1;
%2.假设C_10=2;C_01=1,利用基于Bayes准则的检测方法,对信号是否到达进行检测
%产生检测信号
t1=0:49;
s1=t1/50;
t2=50:149;
s2=-t2/50+2;
t3=150:199;
s3=t3/50-4;
s=[s1,s2,s3]; %产生三角波信号
p0=0.4;%无信号到达的概率
p1=0.6;%有信号到达的概率
C10=2;%风险系数
C01=1;
m=(C10*p0)/(C01*p1);%判别门限计算可得4/3
for t=1:200 %取0ms到199ms的抽样值
n2=5.*randn(1,200); %产生噪声
x=s+n2;%产生含有噪声的信号
x3=x.*s;
x4=s.*s;
if 2*sum(x3)-sum(x4)>2*25*log(m)% 2*sum(x1)-sum(x2)>2*25*log(p0/p1) 与似然比检测相比加入了风险系数其他相同
tally2(t)=1; %检测到信号
' 未检测到信号 ';
else
tally2(t)=0; %未检测到信号
' 检测到信号 ';
end;
end;
ADD2=sum(tally2)
'Number of arrival signal based on Bayes:';
ADD2
%3.通过计算机产生的仿真数据,对两种方法的检测概率、虚警概率、漏警概率和Bayes风险进行仿真计算;
%3.1通过计算机产生的仿真数据,对似然比检测方法的检测概率、虚警概率、漏警概率进行仿真计算
%产生检测信号
t1=0:49;
s1=t1/50;
t2=50:149;
s2=-t2/50+2;
t3=150:199;
s3=t3/50-4;
s=[s1,s2,s3]; %产生信号
%4.1通过改变P(H1)和P(H0)来改变判决的门限(风险系数C_10 和C_01不变),观察似然比检测方法的检测概率、虚警概率、漏警概率的变化
p0=0.4;%改变此处的值完成第4.1问
p1=0.6;
for t=1:5000 %5000次仿真
%5.1改变信号的方差,观察似然比检测方法的检测概率、虚警概率、漏警概率的变化
n=5.*randn(1,200); %产生噪声改变此处的值完成第5.1问改变标准差的值
x=s+n;%产生含有噪声的信号
%利用似然比检测方法(最小错误概率准则),对信号是否到达进行检测
x1=x.*s;
x2=s.*s;
if 2*sum(x1)-sum(x2)>2*25*log(p0/p1)
tally1(t)=1; %检测到信号
' 未检测到信号 '
else
tally1(t)=0; %未检测到信号
' 检测到信号 '
end;
end;
n1=sum(tally1);%检测到信号的次数
n0=5000-n1;
Pd=n1/5000;%检测概率
Pm=n0/5000;%漏警概率
%计算虚警概率程序
for t=1:5000 %5000次仿真
n=5.*randn(1,200); %产生噪声改变此处的值完成第5.1问
x=n;%产生含有噪声的信号
x1=x.*s;
x2=s.*s;
if 2*sum(x1)-sum(x2)>2*25*log(p0/p1)% 虚警概率由于噪声总是客观存在的,当噪声信号的幅度超过检测门限时,
%雷达(或其他检测系统)就会被误认为发现目标,这种错误称为"虚警",它的发生概率称为虚警概率。
tally1(t)=1; %检测到信号
' 未检测到信号 ';
else
tally1(t)=0; %未检测到信号
' 检测到信号 ';
end;
end;
n2=sum(tally1);
Pf=n2/5000;
P=[Pd Pm Pf];
'检测概率Pd, 漏警概率Pm,虚警概率Pf='
P
%3.2通过计算机产生的仿真数据,基于Bayes准则的检测方法的检测概率、虚警概率、漏警概率和Bayes风险进行仿真计算方法代码相同
%只加入了风险系数
%产生检测信号
t1=0:49;
s1=t1/50;
t2=50:149;
s2=-t2/50+2;
t3=150:199;
s3=t3/50-4;
s=[s1,s2,s3]; %产生信号
%4.2通过改变P(H1)和P(H0)来改变判决的门限(风险系数C_10 和C_01不变),观察基于Bayes
准则的检测方法的检测概率、虚警概率、漏警概率和Bayes风险的变化
p0=0.4;%改变此处的值完成第4.2问
p1=0.6;
%假设C_10=2;C_01=1,利用基于Bayes准则的检测方法,对信号是否到达进行检测
C10=2;
C01=1;
m=(C10*p0)/(C01*p1);%判别门限
for t=1:5000 %5000次仿真
%5.2改变信号的方差,观察基于Bayes准则的检测方法的检测概率、虚警概率、漏警概率的变化和Bayes风险的变化
n=5.*randn(1,200); %产生噪声改变此处的值完成第5.2问
x=s+n;%产生含有噪声的信号
x1=x.*s;
x2=s.*s;
if 2*sum(x1)-sum(x2)>2*25*log(m)
tally1(t)=1; %检测到信号
' 未检测到信号 '
else
tally1(t)=0; %未检测到信号
' 检测到信号 '
end;
end;
n1=sum(tally1);%检测到信号的次数
n0=5000-n1;
Pd=n1/5000;%检测概率
Pm=n0/5000;%漏警概率
%计算虚警概率程序
for t=1:5000 %5000次仿真
n=5.*randn(1,200); %产生噪声改变此处的值完成第5.2问
x=n;%产生含有噪声的信号
x1=x.*s;
x2=s.*s;
if 2*sum(x1)-sum(x2)>2*25*log(p0/p1)
tally1(t)=1; %检测到信号
' 未检测到信号 '
else
tally1(t)=0; %未检测到信号
' 检测到信号 '
end;
end;
n2=sum(tally1); %误检测到信号的次数
Pf=n2/5000; %计算虚警概率
r=C10*Pf+C01*Pm;%计算贝叶斯风险
P=[Pd Pm Pf r];
'检测概率Pd, 漏警概率Pm,虚警概率Pf,Bayes风险分别为:'
P
%6.将信号取样间隔减小一倍,观察似然比检测方法的P_d,P_m,P_f和Bayes风险的变化%6.1
%产生检测信号
p0=0.4; %没有信号到达的概率
p1=0.6;%有信号到达的概率
t1=0:0.5:49.5;
s1=t1/50;
t2=50:0.5:149.5;
s2=-t2/50+2;
t3=150:0.5:199.5;
s3=t3/50-4;
s=[s1,s2,s3]; %产生信号
for t=1:5000 %5000次仿真
n=5.*randn(1,400); %产生噪声
x=s+n;%产生含有噪声的信号
%利用似然比检测方法(最小错误概率准则),对信号是否到达进行检测
x1=x.*s;
x2=s.*s;
if 2*sum(x1)-sum(x2)>2*25*log(p0/p1)
tally1(t)=1; %检测到信号
' 未检测到信号 '
else
tally1(t)=0; %未检测到信号
' 检测到信号 '
end;
end;
n1=sum(tally1);%检测到信号的次数
n0=5000-n1;
Pd=n1/5000;%检测概率
Pm=n0/5000;%漏警概率
%计算虚警概率程序
for t=1:5000 %5000次仿真
n=5.*randn(1,400); %产生噪声
x=n;%产生含有噪声的信号
x1=x.*s;
x2=s.*s;
if 2*sum(x1)-sum(x2)>2*25*log(p0/p1)
tally1(t)=1; %检测到信号
' 未检测到信号 '
else
tally1(t)=0; %未检测到信号
' 检测到信号 '
end;
end;
n2=sum(tally1); %误检测到信号的次数
Pf=n2/5000; %计算虚警概率
P=[Pd Pm Pf];
'检测概率Pd, 漏警概率Pm,虚警概率Pf分别为:'
P
%6.2 基于Bayes准则的检测方法取样信号增加一倍观察变化
p0=0.4;%没有信号到达的概率
p1=0.6;%有信号到达的概率
%产生检测信号
t1=0:0.5:49.5;
t2=50:0.5:149.5;
t3=150:0.5:199.5;
s1=t1/50;
s2=-t2/50+2;
s3=t3/50-4;
s=[s1,s2,s3]; %产生信号
%假设C_10=2;C_01=1,利用基于Bayes准则的检测方法,对信号是否到达进行检测C10=2;
C01=1;
m=(C10*p0)/(C01*p1);%判别门限
for t=1:5000 %5000次仿真
n=5.*randn(1,400); %产生噪声
x=s+n;%产生含有噪声的信号
x1=x.*s;
x2=s.*s;
if 2*sum(x1)-sum(x2)>2*25*log(m)
tally1(t)=1; %检测到信号
'未检测到信号 '
else
tally1(t)=0; %未检测到信号
' 检测到信号 '
end;
end;
n1=sum(tally1);%检测到信号的次数
n0=5000-n1;
Pd=n1/5000;%检测概率
Pm=n0/5000;%漏警概率
%计算虚警概率程序
for t=1:5000 %5000次仿真
n=5.*randn(1,400); %产生噪声
x=n;%产生含有噪声的信号
x1=x.*s;
x2=s.*s;
if 2*sum(x1)-sum(x2)>2*25*log(p0/p1)
tally1(t)=1; %检测到信号的次数
' 未检测到信号 '
else
tally1(t)=0; %未检测到信号次数
' 检测到信号 '
end;
end;
n2=sum(tally1);%误检测到信号的次数
Pf=n2/5000;%计算虚警概率
r=C10*Pf+C01*Pm;%计算贝叶斯风险
' Risk='
r
%7.根据s(t)设计一个离散匹配滤波器,并观察x(n)经过该滤波器以后的输出。%产生检测信号
t1=0:49;
s1=t1/50;
t2=50:149;
s2=-t2/50+2;
t3=150:199;
s3=t3/50-4;
s=[s1,s2,s3]; %产生信号
T=201;
for t=1:200 %构造匹配滤波器
sReversal(t)=s(T-t);%mf与s关于t轴对称
end;
n=5.*randn(1,200); %产生噪声
x=s+n;%产生含有噪声的信号
%分别产生原信号,接收信号,噪声信号与mf的卷积,即经过滤波器
out_s=conv(s,sReversal);%原信号经过滤波
out_x=conv(x,sReversal);%含噪声信号(接收信号)经过滤波
out_n=conv(n,sReversal);%噪声信号经过滤波
figure(1);
subplot(2,1,1);
plot(s);
xlabel('t');%单位ms
ylabel('s');
title('original signal s(t)');
grid on;
subplot(2,1,2);
plot(out_s);
xlabel('t');%单位ms
ylabel('out_s');
title('filter out_s(t)');
grid on;
figure(2);
subplot(2,1,1);
plot(x);
xlabel('t');
ylabel('x');
title('original receiving signal x(t)');
grid on;
subplot(2,1,2);
plot(out_x);
xlabel('t');
ylabel('out_x');
title('receiving signal filtered out_x(t)'); grid on;
figure(3);
subplot(2,1,1);
plot(n);
xlabel('t');
ylabel('n');
title('noise signal n(t)');
grid on;
subplot(2,1,2);
plot(out_n);
xlabel('t');
ylabel('out_n');
title('noise filtered out_n(t)');
grid on;