run_lms_mvdr.m
上传用户:yongtai
上传日期:2010-04-02
资源大小:334k
文件大小:1k
源码类别:

通讯编程文档

开发平台:

Matlab

  1. function run_lms_mvdr(rp)
  2. % MVDR adaptive beamforming using the LMS algorithm
  3. Ninit   = rp.p;
  4. Ndata   = Ninit + rp.Nsnaps;
  5. seed    = 1;
  6. % A_i, phi_l are target signal amplitude/elec- angle
  7. % A_2, phi_2 are interference signal amplitude/elec- angle
  8. % s is steering vector along elec. angle of look direction of interest
  9. A_1 = sqrt(rp.var_v) * 10^(rp.TNRdB/20);
  10. phi_1 = pi * rp.sin_theta_1;
  11. A_2 = sqrt(rp.var_v) * 10^(rp.INRdB/20);
  12. phi_2 = pi * rp.sin_theta_2;
  13. s = exp(-j*[0:(rp.p-1)]'*phi_1);
  14. e = s(2:rp.p);
  15. % setup input/output sequences
  16. for i = 1:Ndata,
  17.    % setup random disturbances
  18.    randn('seed', i);
  19.    vr = sqrt(rp.var_v/2) * randn(1, rp.p) + rp.mean_v;
  20.    vi = sqrt(rp.var_v/2) * randn(1, rp.p) + rp.mean_v;
  21.    v  = vr + j*vi;
  22.    rand('seed', i);
  23.    Psi = 2*pi*rand(1);
  24.    Xi(i, :) = A_1*exp(j*[1:rp.p]*phi_1) + A_2*exp(j*[1:rp.p]*phi_2 + Psi) + v;
  25. end;
  26. % setup effective desired output and input vectors from
  27. % original data
  28. g = 1;
  29. d = g * Xi(:, 1);
  30. u = diag(Xi(:, 1)) * (ones(Ndata, 1) * e.') - Xi(:, 2:rp.p);
  31.    
  32. [W, xp] = lms(u, d, rp.mu, rp.decay, rp.verbose);
  33. Wo      = g - W * conj(e);
  34. W       = [Wo W];
  35. eval(['save ' rp.name])