📄 doapar1.m
字号:
function [doaHat, sHat, Q, doaHatAllIt, sigma2] = doapar1(method, sigIn, doaStart, focusDist, rangeIx, cpiIx, in7, in8, in9)%DOAPAR1 Parametric estimation of DOA with different methods.%%--------%Synopsis:% [doaHat,...]=doapar1(method,sigIn,doaStart,focusDist,rangeIx,cpiIx,...)%%Description:% Parametric estimation of DOA (Direction of Arrival) with different methods.%%Output and Input:% doaHat (DoaParamT): The estimated doa.% method (StringT): Estimation method. See below for sections about each% method.% = 'dml': Deterministic Maximum Likelihood.% = 'sml': Stochasic Maximum Likelihood.% = 'wsf': Weighted Subspace Fitting.% = 'ssf': Subspace Fitting.% = 'rmusic': Root Music.% = 'esprit': LS-Esprit.% = 'ptmf': Parametric Target Model Fitting.% sigIn (RxRadarSigT or RxCorrMatT): The input antenna signal or a% spatial correlation matrix. (For PTMF only RxRadarSigT is possible).% focusDist (RealScalarT): Focusing distance, e.g. 'Inf' for far field.% Not used yet.% rangeIx (IntScalarT): Index of range bin. Only used when "sigIn" is% of type RxRadarSigT. Default = 1.% cpiIx (IntScalarT): Index for CPI. Only used when "sigIn" is% of type RxRadarSigT. Default = 1.%%--------%DML (Deterministic Maximum Likelihood).%Synopsis:% doaHat = doapar1('dml', sigIn, doaStart)% doaHat = doapar1('dml', sigIn, doaStart, [], rangeIx, [])% doaHat = doapar1('dml', sigIn, doaStart, [], rangeIx, cpiIx)% doaHat = doapar1('dml', sigIn, doaStart, focusDist, rangeIx, cpiIx)% [doaHat, sHat, dummy1, dummy2, sigma2] = doapar1('dml', sigIn, doaStart,% focusDist, rangeIx, cpiIx)%%Output and Input:% sHat (CxMatrixT): The complex envelope of the estimated source signals,% a complex matrix of size (noSrc x T), where noSrc is the number of% sources and T is the number of snapshots. Not tested.% sigma2 (RealScalarT): Estimated noise variance. Not tested.% sigIn (RxRadarSigT or RxCorrMatT): The input antenna signal or a% correlation matrix of it.% doaStart (Vector of DoaT): Start values of DOA:s. These should be% close to the real values.%%Description:% Returns maximum likelihood estimates for the DOA:s for a deterministic% signal model, see [2].% This method needs Matlab Optimization Toolbox.%%Algoritm:% An optimization problem is solved using the function "leastsq" in the% Optimization Toolbox [6,7]. For details see the code in the function doapar1% and in the function "dmlfun" and reference [2] and [11] p. 111-112.%%--------%SML (Stochasic Maximum Likelihood).%Synopsis:% doaHat = doapar1('sml', sigIn, doaStart)% doaHat = doapar1('sml', sigIn, doaStart, [], rangeIx, [])% doaHat = doapar1('sml', sigIn, doaStart, [], rangeIx, cpiIx)% doaHat = doapar1('sml', sigIn, doaStart, focusDist, rangeIx, cpiIx)% [doaHat, Rss, dummy1, dummy2, sigma2] = doapar1('sml', sigIn, doaStart,% focusDist, rangeIx, cpiIx)%%Output and Input:% Rss (RxMatrixT): Estimated source signal correlation matrix.% sigma2 (RealScalarT): Estimated noise variance. Not tested.% sigIn (RxRadarSigT or RxCorrMatT): The input antenna signal or a% correlation matrix of it.% doaStart (Vector of DoaT): Start values of DOA:s. These should be% close to the real values.%%Description:% Returns maximum likelihood estimates for the DOA:s for a stochastic% signal model, see [2].% This method needs Matlab Optimization Toolbox.%%Algoritm:% An optimization problem is solved using the function "fminu" in the% Optimization Toolbox [6,7]. For details see the code in the function doapar1% and in the function "smlfun" and reference [2].%%--------%WSF (Weighted Subspace Fitting).%Synopsis:% doaHat = doapar1('wsf', sigIn, doaStart)% doaHat = doapar1('wsf', sigIn, doaStart, [], rangeIx, [])% doaHat = doapar1('wsf', sigIn, doaStart, [], rangeIx, cpiIx)% doaHat = doapar1('wsf', sigIn, doaStart, focusDist, rangeIx, cpiIx)%%Output and Input:% sigIn (RxRadarSigT or RxCorrMatT): The input antenna signal or a% correlation matrix of it.% doaStart (Vector of DoaT): Start values of DOA:s. These should be% close to the real values.%%Description:% See reference [4] (This is probably the same description as in [2]).% This method needs Matlab Optimization Toolbox.%%Algoritm:% An optimization problem is solved using the function "leastsq" in the% Optimization Toolbox [6,7]. For details see the code in the function doapar1% and in the function "wsffun" and reference [2].%%--------%SSF (Subspace Fitting).%Synopsis:% doaHat = doapar1('ssf', sigIn, doaStart)% doaHat = doapar1('ssf', sigIn, doaStart, [], rangeIx, [])% doaHat = doapar1('ssf', sigIn, doaStart, [], rangeIx, cpiIx)% doaHat = doapar1('ssf', sigIn, doaStart, focusDist, rangeIx, cpiIx)%%Output and Input:% sigIn (RxRadarSigT or RxCorrMatT): The input antenna signal or a% correlation matrix of it.% doaStart (Vector of DoaT): Start values of DOA:s. These should be% close to the real values.%%Description:% See reference [4] (This is probably the same description as in [2]).% This method needs Matlab Optimization Toolbox.%%Algoritm:% An optimization problem is solved using the function "leastsq" in the% Optimization Toolbox [6,7]. For details see the code in the function doapar1% and in the function "ssffun" and reference [2].%%--------%ROOT MUSIC.%Synopsis:% doaHat = doapar1('rmusic', sigIn, noSrc)% doaHat = doapar1('rmusic', sigIn, noSrc, [], rangeIx, [])% doaHat = doapar1('rmusic', sigIn, noSrc, [], rangeIx, cpiIx)% doaHat = doapar1('rmusic', sigIn, noSrc, focusDist, rangeIx, cpiIx)%%Output and Input:% sigIn (RxRadarSigT or RxCorrMatT): The input antenna signal or a% correlation matrix of it.% noSrc (IntScalarT): The number of sources.%%Description:% Gets a RootMUSIC pseudo DOA. For a description, see reference [2].% This method can only be used for ULA:s ([2] p. 80-81).% Note, that Root Music and LS-Esprit do not calculate the steering% matrix and does not call the function spastemat. All necessary calibration% compensation must therefore be done beforehand on the signals.%%Algoritm:%%--------%LS-ESPRIT.%Synopsis:% doaHat = doapar1('esprit', sigIn, noSrc)% doaHat = doapar1('esprit', sigIn, noSrc, [], rangeIx, [])% doaHat = doapar1('esprit', sigIn, noSrc, [], rangeIx, cpiIx)% doaHat = doapar1('esprit', sigIn, noSrc, focusDist, rangeIx, cpiIx)%%Output and Input:% sigIn (RxRadarSigT or RxCorrMatT): The input antenna signal or a% correlation matrix of it.% noSrc (IntScalarT): The number of sources.%%Description:% For a description, see reference [2].% This method can only be used for ULA:s ([2] p. 80-81).% Can only be used for ULA:s ([2] p. 80-81).% Note, that Root Music and LS-Esprit do not calculate the steering% matrix and does not call the function spastemat. All necessary calibration% compensation must therefore be done beforehand on the signals.%%Algoritm:%%--------%PTMF (Parametric Target Model Fitting)%Synopsis:% doaHat = doapar1('ptmf', sigIn, doaStart, [], [], [], stepLength)% doaHat = doapar1('ptmf', sigIn, doaStart, [], rangeIx, [], stepLength)% doaHat = doapar1('ptmf', sigIn, doaStart,[], rangeIx, cpiIx, stepLength)% [doaHat, sHat, Q, doaHatAllIt] = doapar1('ptmf', sigIn, doaStart,% focusDist, rangeIx, cpiIx, stepLength)%%Description:% Estimates the DOA with PTMF (Parametric Target Model Fitting) and% stochastic approximation. This is probably the same optimization problem% as with the 'dml' method but a different optimization method is used!?!%%Output and Input:% sHat (CxMatrixT): The complex envelope of the estimated source signals,% a complex matrix of size (noSrc x T), where noSrc is the number of% sources and T is the number of snapshots.% Q (RealVectorT.'): The error function (the squared modulus of the error,% see []) for all iterations. Size (1 x T), where T is the number of% snapshots.% doaHatAllIt (RealMatrixT): Estimated theta angle for all iterations.% The size is (noSrc x T), where noSrc is the number of sources and T% is the number of snapshots.% sigIn (RxRadarSigT): The input antenna signal.% doaStart (Vector of DoaT) :Start values of DOA:s. These should be% close to the real values.% stepLength (RealScalarT): Step length, e.g. 0.01. It is a balance between% stability an rapid convergence.%%Algoritm:% The algorithm is based on the one in [] by U. Nickel but there are% some changes:% * The notation is somewhat changed (to come closer to []).% * The step length 'stepLength' is fix and not a function of time.% * There is no limitation of the change in theta to 1/10 of the beamwidth.% * The change in theta is normalized with the power of the antenna signals.% * The pseudo invers is used instead of the "normal equations" due to better% numerical properties.%%Known Bugs:% A possible bug is that the derivative of the steering matrix is complex% conjugated.% Now a complex conjugation of the signals is done. This is maybe an% indication of a bug somewhere.%%--------%Notations:% Data type names are shown in parentheses and they start with a capital% letter and end with a capital T. Data type definitions can be found in [1]% or by "help dbtdata".% [D] = This parameter can be omitted and then a default value is used.% When the [D]-input parameter is not the last used in the call, it must be% given the value [], i.e. an empty matrix.% ... = There can be more parameters. They are explained under respective% metod or choice.%%Examples:%%Software Quality:% (About what is done to ascertain software quality. What tests are done.)% The methods 'dml', 'sml', 'wsf', 'ssf', 'rmusic' and 'esprit' were used% in the work done by A. Heydarkhan [8].% The method 'ptmf' was used in the work done by M. Borgstr鰉 and% S. Bj鰎klund [9].%%Known Bugs:% The last input parameters "ranges", "theta0" and "poserr" (DBT release 1.6)% of the function spastemat are not used.% The wavelength is acquired from the antenna definition. This is not% logical but works as the wavelength happens to be stored there.%%References:% [1]: Bj鰎klund S.:"DBT, A MATLAB Toolbox for Radar Signal Processing.% Reference Guide", FOA-D--9x-00xxx-408--SE, To be published.% [2]: Krim H., Viberg M.:"Two Decades of Array Signal Processing Research",% IEEE Signal Processing Magazine, July 1996, pp. 67-94.% [3]: Roy R., Kailath T.:"ESPRIT-Estimation of Signal Parameters via% Rotational Invariance Techniques", IEEE Transaction on Acoustics,% Speech and Signal Processing, Vol. 37, No. 7, p. 984-995, July 1989.% [4]: Viberg M.:"Sensor Array Signal Processing, Lecture notes", Chalmers% University of Technology, From courses held at Chalmers the spring 1996% and at FOA the autumn 1996.% [5]: Carlstedt O.: "Superuppl鰏ning vid radarspaning i st鰎d signalmilj
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -