⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stardoa.m

📁 阵列信号处理的工具箱
💻 M
字号:
function [StartDOA] = stardoa(R,thetaprev,method,tol)% *****************************************************************************%   *  DBT, A Matlab Toolbox for Radar Signal Processing  *% (c) FOA 1994-2000. See the file dbtright.m for copyright notice.%%  function StartDOA = stardoa(R,thetaprev,method,tol)%%%  Finds the Startvalues for parametric algorithms%%  R    Covariance Matrix%  thetaprev%  method 'ap' (Alternating Projection) is implemented%     'ap' by default%  tol    0.01 by default%%  Ex. Calculating of two start values%     doaStart(1) = stardoa(R,-1);    %find the first DOA%   doaStart(2) = stardoa(R,[doaStart(1)]); %find the other one%   edoa = doapar1('wsf',R, doaStart);  %use it in a DOA algorithm%%%%  Start        : 970715 Amir Heydarkhan (amihey).%  Latest change: $Date: 2000/10/16 15:22:12 $ $AEthor: amihey $.%  $Revision: 1.11 $% *****************************************************************************if nargin < 2,  tol = 0.01*pi/180;  method = 'ap';  thetaprev = -1;elseif nargin < 3,  tol = 0.01*pi/180;  method = 'ap';elseif nargin < 4,  tol = 0.01*pi/180;endantenna = R.antenna;%lambda = antenna.lambda;waveform = R.waveform;lambda  = waveform.wavelength;E = R.corrMat;E = sqrtm(E);[cE,rE] = size(E);d = length(thetaprev);if method == 'ap',%----------------------------------------------------------% Alternating Projection%----------------------------------------------------------  if thetaprev == -1,    Q2 = eye(cE);  else    rand('uniform')    while (min(abs(thetaprev(1:d-1)-thetaprev(2:d))) < tol )      thetaprev = thetaprev+ 5*tol*rand(size(thetaprev));      thetaprev = sort(thetaprev);    end    A = spastemat(antenna, thetaprev, lambda);    [Q2,R0] = qr(A);Q2 = Q2(:,d+1:cE);  end  %--------------  %a coarse grid  %--------------  beamwidth = asin(2/cE);   % Beamwidth for half-wavelength spaced ELA  if tol < beamwidth/4    delta = beamwidth/4;  else    delta = tol;  end  global phitab if isempty(phitab)    thmin = d2r(-80);   %form -80 to 80 degrees    thmax = d2r(80);  else    thmax = max(phitab);    thmin = min(phitab);  end  thhat = thmin:delta:thmax;  Abig = spastemat(antenna, thhat, lambda);  QA = Q2'*Abig;  B = (E'*Q2)*QA;  P = diag(real(B'*B))./diag(real(QA'*QA));  [Pp,index] = max(P);  StartDOA = thhat(index);%----------------------------------------------------------%%----------------------------------------------------------%elseif method == 'ddd',%----------------------------------------------------------%%----------------------------------------------------------%elseif method == 'ddd',%----------------------------------------------------------% The method is not implemented yet!!!%----------------------------------------------------------else  disp('the method is not implemented yet!!!')end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -