信号检测与估计仿真作业Word下载.docx
《信号检测与估计仿真作业Word下载.docx》由会员分享,可在线阅读,更多相关《信号检测与估计仿真作业Word下载.docx(17页珍藏版)》请在冰点文库上搜索。
式中,
当有P个信源时,波束的方向向量可分别表达为,,…,。
这P个方向向量组成的矩阵称为阵列的方向矩阵或响应矩阵,它表示所有信源的方向信息。
当有N个窄带信号入射到空间M个阵元上时候,接收的信号可以写成如下的矢量形式:
式中,X(t)为阵列的M×
1维快拍数据矢量,N(t)为阵列的M×
1维噪声数据矢量,
S(t)为空间信号的N×
1维矢,A空间阵列的M×
N维响应矩阵(导向矢量阵)。
三.实验过程
3.1实验1
首先,当M=1,实验1就变成了一般二元随机振幅与随机相位信号的波形检测问题。
这样,就有如下模型:
H0:
xt=B1cosω0t+θ0+nt,0≤t≤T
H1:
xt=A1cosω1t+θ0+nt,0≤t≤T
其中,噪声n(t)是均值为零,功率谱密度为Pnω=N02的高斯白噪声;
信号的振幅服从瑞丽分布,随机相位服从均匀分布。
由于功率信噪比早0~60dB范围内,取A0=100,N0=2,T=1us。
根据教材的推导,得到错误判决概率的表达式如下:
PH0H1=N02N0+σa2T
PH1H0=N02N0+σa2T
从上面可以看到,当M=1时,模型很简单。
当M>
1时,我们选取一个M值,用MATLAB软件进行仿真,得到仿真结果如下图所示(MATLAB仿真程序见附录1):
3.2实验2
3.2.1.MUSIC算法过程及仿真
1).收集阵列接收的数据样本得到数据协方差矩阵
2).对协方差矩阵进行特征分解,分解为特征值和特征向量的形式
式中,是对应的特征向量所组成的矩阵,为的特征值。
3).利用最小特征值的重数M来估计信号源数
4).计算MUSIC算法的功率谱
5).中极大值对应的角度就是信号入射方向。
在Matlab的命令窗口输入仿真程序,见附录2,得到如下结果:
A=
-102345
DOA=
44.998623.0019-10.0519
图3.1MUSIC算法非相关源的模拟测向仿真
3.2.2ESPRIT算法过程及仿真
1).由快拍数据X可以得到数据相关矩阵R的估计
2).对相关矩阵的估计做特征分解
(33)
特征值矩阵,。
3).利用小特征值的重数估计得到信号源的估计数。
4).将特征向量矩阵分解为子阵列矩阵得到:
5).得到
6).对Ψ进行特征分解,得到K个特征值,就可以得到对应K个信号的到达角。
在Matlab的命令窗口输入仿真程序,见附录3,得到如下结果:
图3.2ESPRIT算法非相关源的模拟测向仿真
3.2.3GEESE算法:
2).对进行特征分解,得到和:
3).选定J的值,将代入式中得到,:
4).将,代入式得到;
5).将代入式中即得到信号源的波达方向:
在Matlab的命令窗口输入仿真程序,见附录4,得到如下结果:
-30.0244
0.0000
30.0244
图3.3GEESE算法非相关源的模拟测向仿真
3.2.4三种算法性能比较
MUSIC算法就是多重信号分类算法,它是一种信号参数估计算法,利用输入信号协方差矩阵的特征结构,给出的信息包括入射信号的数目、各个信号的波达方向、强度以及入射信号和噪声间的互相关。
ESPRIT算法就是旋转不变子空间算法,也是一种基于子空间的波达方向估计技术,与MUSIC算法不同的是,ESPRIT算法不需要精确知道阵列的方向向量,仅需各子需各子阵列之间保持一致,因此降低了对阵列校准的严格性。
GEESE算法是指信号子空间特征向量的广义特征值法,可以在简化计算的情况下解决ESPRIT算法中实际噪声测量有误差的问题。
这三种算法是空间谱估计中最经典的算法。
MUSIC算法估计值接近克拉美—罗界算法(CRB),对参数的少量偏差不敏感,更接近实际应用,具有较好的应用前景,但需要对参数空间进行搜索,计算量大。
随着信噪比的增加,MUSIC功率谱的峰值越高,估计精度越精确。
在阵元数目不同,其他条件相同的情况下,阵元数目越大,旁瓣干扰越小,DOA估计越精确。
在条件相同的情况下,相邻信号(以50为例)的MUSIC功率谱随着角度的增加而降低,信号源相关,MUSIC算法失效。
色噪声下,MUSIC算法方位估计不准确。
与MUSIC算法相比,ESPRIT算法还降低了计算量和存储量,且避免了参数空间的搜索,计算量小于MUSIC算法,但是算法数据协方差矩阵中提取噪声方差的估计,有时会使估计结果变坏,当信号高度相关时估计性能同样会变坏,且对所设的参数有较高的要求,少量的误差也会导致算法的失败。
在ESPRIT算法中随着信噪比的增加,均方误差越小,DOA估计效果越好。
在阵元数目不同,其他条件相同的情况下,阵元数目越大,均方误差越小,ESPRIT算法的估计精度越高。
在条件相同的情况下,相邻信号(以100为例)的均方差与信噪比关系随着角度的增加而性能降低。
ESPRIT算法对相干信号的DOA估计失效。
而GEESE算法,不仅计算量比较小,而且保证了算法的精度,但当信号高度相关时性能仍然变坏。
在GEESE算法中随着信噪比的增加,均方误差越小,DOA估计效果越好。
在阵元数目不同,其他条件相同的情况下,阵元数目越大,均方误差越小,GEESE算法的估计精度越高。
在条件相同的情况下,相邻信号(以50为例)的均方差与信噪比关系随着角度的增加而性能降低,GEESE算法对相干信号的DOA估计失效。
3.3实验3
3.3.1非平稳噪声下,三种算法对DOA估计影响的matlab仿真结果
图3.4非平稳噪声下MUSIC算法对DOA估计的影响
图3.5非平稳噪声下ESPRIT算法对DOA估计的影响
图3.6非平稳噪声下GEESE算法对DOA估计的影响
3.3.2色噪声噪声下,三种算法对DOA估计影响的matlab仿真结果
图3.7色噪声下MUSIC算法对DOA估计的影响
图3.8色噪声下ESPRIT算法对DOA估计的影响
图3.9色噪声下GEESE算法对DOA估计的影响
附录1第1题仿真程序
clc;
clear;
closeall
M=[1246810];
%M为接收机个数
N=[1510];
%N为射频脉冲数
fori=1:
1
Estimate=zeros(3,11);
figure
forj=1:
3
forsnr=0:
60
all_err=0;
forcon=1:
1100
Error=mreceiver(M(5),N(j),snr);
%计算j个接收机和i个射频脉冲数的最小错误概率
all_err=all_err+sum(Error);
end
Estimate(j,snr+1)=all_err/2200.0;
end
end
holdon
plot(Estimate(1,:
),'
r'
);
plot(Estimate(2,:
b-'
plot(Estimate(3,:
m'
xlabel('
SNR=0~60dB'
ylabel('
估计误差'
title('
16个接收单元最小误判概率仿真'
legend('
1个射频脉冲数'
'
5个射频脉冲数'
10个射频脉冲数'
gridon
holdoff;
end
functionda=anc_mac(x,y)
if(size(x)~=size(y))
error('
thesizeofxisnotequalwithy'
end
su=0;
[a,b]=size(x);
fori=1:
a
forj=1:
b
su=su+x(i,j)*y(i,j);
end
da=su;
%misthenumberofreceiver
function[err]=mreceiver(m,n,snr)
S1=cos(0:
2*pi/40:
6*pi-2*pi/40);
S2=cos(0:
2*pi/10:
(24*pi)-2*(pi/10));
Gains=ones(m,1);
a=raylrnd(Gains);
b=raylrnd(Gains);
x=unifrnd(zeros(m,n),2*pi*ones(m,n));
y=unifrnd(zeros(m,n),2*pi*ones(m,n));
noise1=10^(-snr/20)*wgn(m,120*n,0);
noise2=10^(-snr/20)*wgn(m,120*n,0);
S_in1=zeros(m,120*n);
S_in2=zeros(m,120*n);
%signalsreceived
m
n
S_in1(i,(j-1)*120+1:
j*120)=a(i,1)*cos((0:
(120-1)*2*pi/40)+x(i,j)*ones(1,120))+noise1(i,(j-1)*120+1:
j*120);
S_in2(i,(j-1)*120+1:
j*120)=b(i,1)*cos((0:
(120-1)*2*pi/10)+y(i,j)*ones(1,120))+noise2(i,(j-1)*120+1:
Pcout11=zeros(m,1);
Pcout12=zeros(m,1);
Pcout21=zeros(m,1);
Pcout22=zeros(m,1);
%thestructureofthemac
Pcout11(i,1)=Pcout11(i,1)+anc_mac(S_in1(i,(j-1)*120+1:
j*120),S1);
Pcout12(i,1)=Pcout12(i,1)+anc_mac(S_in1(i,(j-1)*120+1:
j*120),S2);
Pcout21(i,1)=Pcout21(i,1)+anc_mac(S_in2(i,(j-1)*120+1:
Pcout22(i,1)=Pcout22(i,1)+anc_mac(S_in2(i,(j-1)*120+1:
end
%gettheabsolutevalueofthemac
Pcout11=abs(Pcout11);
Pcout12=abs(Pcout12);
Pcout21=abs(Pcout21);
Pcout22=abs(Pcout22);
Pcout11(i,1)=Pcout11(i,1)*Pcout11(i,1)/(2*a(i,1)*a(i,1)+2)-log((a(i,1)*a(i,1)+1));
Pcout12(i,1)=Pcout12(i,1)*Pcout12(i,1)/(2*a(i,1)*a(i,1)+2)-log((a(i,1)*a(i,1)+1));
Pcout21(i,1)=Pcout21(i,1)*Pcout21(i,1)/(2*b(i,1)*b(i,1)+2)-log((b(i,1)*b(i,1)+1));
Pcout22(i,1)=Pcout22(i,1)*Pcout22(i,1)/(2*b(i,1)*b(i,1)+2)-log((b(i,1)*b(i,1)+1));
%getthedecesionofthedetection
err=[sum(Pcout11)<
sum(Pcout12),sum(Pcout21)>
sum(Pcout22)];
附录2MUSIC算法程序
N=1024;
%%快拍数
doa=[-5004070]/180*pi;
%%信号到达角
w=[100030002000500]'
;
%%信号频率
M=8;
%%阵元数
P=length(w);
%%信号个数,也可以用特征分解的大特征值数来决定
l=150;
%波长
d=l/2;
%阵元间距
snr=15;
%%信噪比
%%阵列流形矩阵
B=zeros(P,M);
fork=1:
P
B(k,:
)=exp(-j*2*pi*d*sin(doa(k))/l*[0:
M-1]);
B=B'
%%%阵列流形矩阵
%s=10^(snr/20)*(1/sqrt
(2))*(randn(4,N)+j*randn(4,N));
%仿真信号(随机信号)
s=10^(snr/20)*sin(w*[0:
N-1]);
%仿真信号(正弦信号)
%s=10^(snr/20)*exp(j*w*[0:
%仿真信号(指数信号)
%s=10^(snr/20)*sawtooth(w*[0:
%仿真信号(锯齿波信号)
%s=2*exp(j*(w*[1:
N]));
%生成信号
x=B*s;
x=B*s+(1/sqrt
(2))*(randn(M,N)+j*randn(M,N));
%加了高斯白噪声后的阵列接收信号
x=B*s+awgn(x,snr);
%v=[11111111]*randn;
%Q=diag(v);
%噪声协方差矩阵对角线值相同
%v=randn(1,M);
%噪声协方差矩阵对角线值不同
Q=randn(M);
%噪声协方差矩阵不为对角阵
R=x*x'
+Q;
%数据协方差矩阵
%%%%以下是MUSIC的程序
[U,V]=eig(R);
UU=U(:
1:
M-P);
theta=-90:
0.5:
90;
%%谱峰搜索
forii=1:
length(theta)
AA=zeros(1,length(M));
forjj=0:
M-1
AA(1+jj)=exp(-j*2*jj*pi*d*sin(theta(ii)/180*pi)/l);
end
Pmusic(ii)=abs(1/(AA*UU*UU'
*AA'
));
Pmusic=10*log10(Pmusic/max(Pmusic)+eps);
plot(theta,Pmusic)
xlabel('
Angle\theta/degree'
)
ylabel('
P(\theta)/dB'
title('
MUSIC非相关源测向仿真'
'
fontsize'
13,'
fontweight'
bold'
fontname'
隶书'
color'
red'
gridon
%%%%MUSIC程序结束
附录3ESPRIT算法程序
doa=[-102345]/180*pi;
w=[100030002000]'
%s=10^(snr/20)*(1/sqrt
(2))*(randn(3,N)+j*randn(3,N));
%x=B*s;
%Q=diag(v)%噪声协方差矩阵对角线值相同
v=randn(1,M);
Q=diag(v);
%Q=randn(M);
%%以下是ESPRIT程序
Rxx=R(1:
M-1,1:
M-1);
%%%M-1维的自相关函数
Rxy=R(1:
M-1,2:
M);
%%%M-1维的互相关函数
b=[zeros(1,M-2);
eye(M-2)];
b=[bzeros(M-1,1)];
Cxx=Rxx-min(eig(Rxx))*eye(M-1);
Cxy=Rxy-min(eig(Rxx))*b;
a=eig(Cxx,Cxy);
%找出最接近1的a值其对应的角度即为φ
a1=abs(abs(a)-1);
[c,d]=min(a1);
a1(d)=1000;
bb(i)=a(d);
a(d)=1000;
%ifP>
disp('
Theanglesofs