最小方差无失真响应波束形成器

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

最小方差无失真响应波束形成器

题目:

考察LMS 算法应用于最小方差无失真响应(MVDR)波束形成器的器情况,它有5个完全一样的空间传感器的线性阵列组成。相对于阵列线的法线方向用弧度来度量,则目标信号与干扰信号入射角度可表示为 目标信号

1ta r ge t sin (0.2)φ-=- 干扰

1i nt sin (0)e r f φ-= 增益向量1g =

空间响应的定义为2

^

10

20log ()()H

w n s θ,

234()1,,,,T

j j j j s e e e e θθθθ

θ----⎡⎤=⎣⎦

当步长参数分别为891010,10,10u ---=,即INR=20,30,40Db 时波束形成器的权

向量()^

w n 利用LMS 进行计算。

1. 最小二乘自适应滤波器算法

function [W, e] = lms(u, d, mu, decay, verbose) % Input parameters:

% u : matrix of training/test points - each row is % considered a datum

% d : matrix of desired outputs - each row is % considered a datum

% mu : step size for update of weight vectors % decay : set to 1 for O(1/n) decay in m

% verbose : set to 1 for interactive processing

% length of maximum number of timesteps that can be predicted N = min(size(u, 1), size(d, 1)); Nin = size(u, 2); Nout = size(d, 2);

% initialize weight matrix and associated parameters for LMS predictor

w = zeros(Nout, Nin); W = [];

for n = 1:N, W = [W ; w];

% predict next sample and error

xp(n, :) = u(n, :) * w';

e(n, :) = d(n, :) - xp(n, :);

ne(n) = norm(e(n, :));

if (verbose ~= 0)

disp(['time step ', int2str(n), ': mag. pred. err. = ' , num2str(ne(n))]);

end;

% adapt weight matrix and step size

w = w + mu * e(n, :)' * u(n, :);

if (decay == 1)

mu = mu * n/(n+1); % use O(1/n) decay rate

end;

end % for n

2.基于LMS算法的MVDR自适应波束形成器

function run_lms_mvdr(rp)

Ninit = rp.p;

Ndata = Ninit + rp.Nsnaps;

seed = 1;

% A_i, phi_l are target signal amplitude/elec- angle

% A_2, phi_2 are interference signal amplitude/elec- angle

% s is steering vector along elec. angle of look direction of interest

A_1 = sqrt(rp.var_v) * 10^(rp.TNRdB/20);

phi_1 = pi * rp.sin_theta_1;

A_2 = sqrt(rp.var_v) * 10^(rp.INRdB/20);

phi_2 = pi * rp.sin_theta_2;

s = exp(-j*[0:(rp.p-1)]'*phi_1);

e = s(2:rp.p);

% setup input/output sequences

for i = 1:Ndata,

% setup random disturbances

randn('seed', i);

vr = sqrt(rp.var_v/2) * randn(1, rp.p) + rp.mean_v;

vi = sqrt(rp.var_v/2) * randn(1, rp.p) + rp.mean_v;

v = vr + j*vi;

rand('seed', i);

Psi = 2*pi*rand(1);

Xi(i, :) = A_1*exp(j*[1:rp.p]*phi_1) + A_2*exp(j*[1:rp.p]*phi_2 + Psi) + v;

end;

% setup effective desired output and input vectors from

% original data

g = 1;

d = g * Xi(:, 1);

u = diag(Xi(:, 1)) * (ones(Ndata, 1) * e.') - Xi(:, 2:rp.p);

相关文档
最新文档