📄 stardoa.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 + -