CAPON波束形成_Matlab程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CAPON 波束形成器仿真

1.实验原理

波束形成就是从传感器阵列重构源信号。(1)、通过增加期望信源的贡献来实现;(2)、通过抑制掉干扰源来实现。经典的波束形成需要观测方向(期望信源的方向)的知识。盲波束形成试图在没有期望信源方向信息的情况下进行信源的恢复。

波束形成技术的基本思想是:通过将各阵元输出进行加权求和,在一时间内将天线阵列波束“导向”到一个方向上,对期望信号得到最大输出功率的导向位置即给出DOA 估计。 虽然阵列天线的方向图是全方向的,但阵列的输出经过加权求和后,却可以被调整到阵列接收的方向增益聚集在一个方向上,相当于形成了一个”波束”。这就是波束形成的物理意义所在。

在智能天线中,波束形成是关键技术之一,是提高信噪比、增加用户容量的保证,能够成倍地提高通信系统的容量,有效地抑制各种干扰,并改善通信质量。

波束形成器的最佳权向量w 取决于阵列方向向量)(a k θ ,而在移动通信里用户的方向向量一般未知,需要估计(称之为DOA 估计)。因此,在计算波束形成的最佳权向量之前,必须在已知阵列几何结构的前提下先估计期望信号的波达方向。

Capon 波束形成器求解的优化问题可表述为

w arg min P(w)θ=

其约束条件为 1)(a w H =θ

Capon 波束形成器在使噪声和干扰所贡献的功率为最小的同时,保持了期

望信号的功率不变。因此,它可以看作是一个尖锐的空间带通滤波器。最优加 权向量w 可以利用Lagrange 乘子法求解,其结果为 )(a R ˆ)(a )(a R ˆw 1H 1CAP θθθ--=

当μ不取常数,而取作)(a R ˆ)(a 11H θθμ-=时,最佳权向量就转变成Capon 波束形成器的权向量。空间谱为

)(a R

ˆ)(a 1)(P 1-H CAP θθθ=

2.变量定义

M :均匀线阵列数目

P :信号源个数

nn :快拍数

angle1、angle2、angle3:信号来波角度

u :复高斯噪声

Ps :信号能量

refp :信噪比(实值)

X :接收信号

Rxx :接收信号的相关矩阵

doa :波达方向估计

3.仿真结果

采用上述算法进行仿真,结果如图所示。

在本仿真程序中,我们采用16个均匀线阵列,3个信号源,来波角度分别为5︒、45︒、20-︒,信噪比均为10dB ,噪声为复高斯白噪声,快拍数1000。 由仿真结果看出,capon 波束形成器较好的给出了信号的doa 估计,但是在仿真的过程中,我们发现,capon 算法具有很大的局限性,其对扰和噪声是比较敏感的。

4.程序

clear all

i=sqrt(-1);

j=i;

M=16; %均匀线阵列数目

P=3; %信号源数目

f0=10;f1=50;f2=100;%信号频率

nn=1000; %快拍数

angle1=45;angle2=5;angle3=-20;%the signal angle th=[angle1;angle2;angle3]';

SN1=10;SN2=10;SN3=10;%信噪比

sn=[SN1;SN2;SN3];

degrad=pi/180;

tt=0:.001:(1-.001);

x0=exp(-j*2*pi*f0*tt); %3个信号x0、x1、x2

x1=exp(-j*2*pi*f1*tt); %

x2=exp(-j*2*pi*f2*tt); %

t=1:nn;

S=[x0(t);x1(t);x2(t)];

nr=randn(M,nn);

ni=randn(M,nn);

u=nr+j*ni; %复高斯白噪声

Ps=S*S'./nn; %信号能量

ps=diag(Ps);

refp=2*10.^(sn/10);

tmp=sqrt(refp./ps);

S2=diag(tmp)*S; %加入噪声

tmp=-j*pi*sin(th*degrad);

tmp2=[0:M-1]';

a2=tmp2*tmp;

A=exp(a2);

X=A*S2+.1*u; %接收到的信号

Rxx=X*X'./nn; %相关矩阵

invRxx=inv(Rxx);

%搜寻信号

th2=[-90:90]';

tmp=-j*pi*sin(th2'*degrad);

tmp2=[0:M-1]';

a2=tmp2*tmp;

A2=exp(a2);

den=A2'*invRxx*A2;

doa=1./den;

semilogy(th2,doa,'r');

title('spectrum');

xlabel('angle');

ylabel('spectrum');

axis([-90 90 1e1 1e5]);

grid;

相关文档
最新文档