Capon波束形成器推导和仿真

Capon波束形成器的思想

Capon波束形成器,又叫最小噪声方差波束形成器,其原理就是在知道期望信号来向的时候,通过在将信号来向的响应设置为常量的约束条件下,选择能将阵列接收到的信号的功率最小的权值的方法。那么为什么要这样来进行波束形成呢?因为这样选取权值,相当于获得最大的信干燥比(特定来向的信号的功率为常数,同时使得干扰和噪声尽可能地衰减)

数学推导过程

假设M阵列天线接收到的信号为 X ( t ) ⃗ = [ x 1 ( t ) , x 2 ( t ) , . . . , x M ( t ) ] T \vec{X(t)} = [x_1(t), x_2(t), ..., x_M(t)]^T X(t) =[x1(t),x2(t),...,xM(t)]T,那么经过加权之后输出的信号为 y ( t ) = W ⃗ H X ( t ) ⃗ y(t) = \vec{W}^H\vec{X(t)} y(t)=W HX(t) ,则接收信号的功率为 E [ ∣ y ( t ) ∣ 2 ] = E [ y ( t ) × y ( t ) H ] = W ⃗ H R x W ⃗ E[|y(t)|^2] = E[y(t) \times y(t)^H] \\ = \vec{W}^HR_x\vec{W} E[y(t)2]=E[y(t)×y(t)H]=W HRxW ,假设期望信号的来向为 θ 0 \theta_0 θ0,约束条件为 W ⃗ H a ( θ 0 ) ⃗ = 1 \vec{W}^H\vec{a(\theta_0)} = 1 W Ha(θ0) =1,然后利用拉格朗日乘子法来进行极值的求解:
L ( W , λ ) = 1 2 × W ⃗ H R x W ⃗ − λ ( W ⃗ H a ( θ 0 ) ⃗ − 1 ) L(W, \lambda) = \frac{1}{2}\times\vec{W}^HR_x\vec{W} - \lambda(\vec{W}^H\vec{a(\theta_0)} - 1) L(W,λ)=21×W HRxW λ(W Ha(θ0) 1)
W ⃗ \vec{W} W 进行求偏导可得(这里就先看成对一个实向量 W ⃗ \vec{W} W 的求导,这里查了资料也没搞清楚为什么是将其看成一个实向量进行操作的)
∂ L ∂ W = R x W ⃗ − λ a ( θ 0 ) ⃗ \frac{\partial{L}}{\partial{W}} = R_x\vec{W} - \lambda\vec{a(\theta_0)} WL=RxW λa(θ0)
令其等于零:
R x W ⃗ = λ a ( θ 0 ) ⃗ R_x\vec{W} = \lambda\vec{a(\theta_0)} RxW =λa(θ0)
方程两边同时乘以 左 乘 W ⃗ H 左乘\vec{W}^H W H
W ⃗ H R x W ⃗ = λ W ⃗ H a ( θ 0 ) ⃗ \vec{W}^HR_x\vec{W} = \lambda\vec{W}^H\vec{a(\theta_0)} W HRxW =λW Ha(θ0)
代入约束条件可得:
P m i n = λ P_{min} = \lambda Pmin=λ
进而可得:
W o p t ⃗ = P m i n R x − 1 a ( θ 0 ) ⃗ \vec{W_{opt}} = P_{min}R_x^{-1}\vec{a(\theta_0)} Wopt =PminRx1a(θ0)
下面的问题就是要求出 P m i n P_{min} Pmin,继续利用约束条件 W ⃗ H a ( θ 0 ) ⃗ = 1 \vec{W}^H\vec{a(\theta_0)} = 1 W Ha(θ0) =1
a ( θ 0 ) ⃗ H W o p t ⃗ = P m i n a ( θ 0 ) ⃗ H R x − 1 a ( θ 0 ) ⃗ \vec{a(\theta_0)}^H \vec{W_{opt}} = P_{min}\vec{a(\theta_0)}^HR_x^{-1}\vec{a(\theta_0)} a(θ0) HWopt =Pmina(θ0) HRx1a(θ0)
则可得:
P m i n = 1 a ( θ 0 ) ⃗ H R x − 1 a ( θ 0 ) ⃗ P_{min} = \frac{1}{\vec{a(\theta_0)}^HR_x^{-1}\vec{a(\theta_0)}} Pmin=a(θ0) HRx1a(θ0) 1
可得最优权值:
W o p t ⃗ = R x − 1 a ( θ 0 ) ⃗ a ( θ 0 ) ⃗ H R x − 1 a ( θ 0 ) ⃗ \vec{W_{opt}} = \frac{R_x^{-1}\vec{a(\theta_0)}}{\vec{a(\theta_0)}^HR_x^{-1}\vec{a(\theta_0)}} Wopt =a(θ0) HRx1a(θ0) Rx1a(θ0)

利用capon算法来实现来向估计

基本思想:由上面的推导过程可以看出,当对于接收到的信号,当权值选取满足在信号来向方向上阵列输出为常数,并且使得信号功率最小的时候,得到的阵列的输出功率为 P m i n = 1 a ( θ 0 ) ⃗ H R x − 1 a ( θ 0 ) ⃗ P_{min} = \frac{1}{\vec{a(\theta_0)}^HR_x^{-1}\vec{a(\theta_0)}} Pmin=a(θ0) HRx1a(θ0) 1,其中的 θ 0 \theta_0 θ0的期望信号的来向,于是对于一个阵列,接收到多个来向的信号,可以通过遍历 θ \theta θ,通过查看功率峰值,来估计信号的来向和个数。
以8阵元,三个不同来向的信号为例,进行matlab仿真
在这里插入图片描述

matlab仿真程序

%利用Capon来进行来向估计
clear;
clc;
M = 8;      %阵元个数
m = 0 : M-1;
P_x = 10^(10/10);        %信号的功率10dB
f_0 = 1000000;  %信号频率1Mhz
T_0 = 1/f_0;  
Fs = 10000000;  %采样频率10Mhz     
t = -T_0*30 : 1/Fs : T_0*30;
c = 3E8;
lambda = c/f_0;
d = lambda/2;
x = sqrt(2*P_x)*exp(1i*2*pi*f_0*t); %信号的复数形式
%theta_in = 10;
%x_in = exp(-1i*2*pi*d*m'*sin(theta_in/180*pi)/lambda)*x + randn(M, length(t)) + i*randn(M, length(t));
theta_in = [10, 60, 30];        %接收到的信号
x_in = zeros(M, length(t));

for i = 1 : length(theta_in)
    x_in = x_in + exp(-1i*2*pi*d*m'*sin(theta_in(i)/180*pi)/lambda)*x;
end

x_in = x_in + + randn(M, length(t)) + i*randn(M, length(t));
%计算接收信号的协方差阵
R_x = x_in * x_in'/length(t);

theta = -90 : 90;
P_out = zeros(1, length(theta));
for i = 1 : length(theta)
    P_out(i) = 1/(exp(-1i*2*pi*d*m'*sin(theta(i)/180*pi)/lambda)'*inv(R_x)*exp(-1i*2*pi*d*m'*sin(theta(i)/180*pi)/lambda));
end
plot(theta, 10*log10(abs(P_out)));
xlabel('\theta角度');
ylabel('dB');
title('利用capon算法来实现来向估计');

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

able陈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值