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

📄 ecorrm.m

📁 阵列信号处理的工具箱
💻 M
📖 第 1 页 / 共 2 页
字号:
function Rout  = ecorrm(inData, method, rangeIx, cpiIx, in5, in6, in7, dimensions)%ECORRM Estimates the antenna signal correlation matrix or modifies the estimate.%%--------%Synopsis:%  Rout = ecorrm(inData, method, rangeIx, cpiIx, ...)%%Description:%  Estimates the antenna signal correlation matrix or modifies the estimate.%  If the input parameter "inData" is of data type RxRadarSigT, then%  samples used for the estimation are taken from all pulses at a certain%  range bin (specified by "rangeIx") and CPI (specified by "cpiIx").%  If the input parameter "inData" is of data type RxCorrMatT the input%  parameters "rangeIx" and "cpiIx" are not used.%%  The base of all estimates of the correlation matrix is a maximum%  likelihood (ML) estimate and this is what is%  returned if nothing else is requested. The ML-estimate can be modified%  in different ways, see the "method" input parameter. The estimation%  and modification can be done in one call or two, where the first%  calculate the ML-estimate and the second does the modification.%  If the input is already a correlation matrix and "method" = [], then%  nothing is done but returning the input as output.%%  Modifications to the help text of this function should also be done%  to the function "modcorrmkernel".%%Output and Input:%  Rout (RxCorrMatT): The estimated antenna signal correlation matrix%    or a modification of the estimate. This output parameter always%    contains only one correlation matrix.%  inData (RxRadarSigT or RxCorrMatT): The input antenna signal or a%    correlation matrix of it.%  method [D](StringT): Type of correlation matrix estimation. See below for%    sections about each method.%    = 'ml': ML-estimate (default). See below.%    = 'forback': Forward-backward averaging. See below.%    = 'spatsmooth': Spatial smoothing. See below.%    = 'diagload': Diagonal loading. See below.%    = 'diagloadeig': Diagonal loading relative noise eigenvalues. See below.%    = 'equeig': Equal Noise Eigenvalues. See below.%    = 'normeig': Norming relative the noise eigenvalues. See below.%  rangeIx [D](IntScalarT): Specify the range bin to use in the radar%    signal when estimating the correlation matrix. Default range bin is 1.%    This input parameter is only applicable when the input parameter%    "inData" is of data type RxRadarSigT.%  cpiIx [D](IntScalarT): Like "rangeIx" but for CPI. Default CPI is 1.%  dimensions [D] (IndexT): The used index in the data (a RxRadarSigT %    variable), e.g = [ 3] for a space correlation matrix and = [1 3] for%    a space-time (slow-time) correlation matrix. Not implemented.%%--------%Maximum Likelihood%Synopsis:%  Rout = ecorrm(inData)%  Rout = ecorrm(inData, 'ml')%  Rout = ecorrm(inData, 'ml', rangeIx, cpiIx)%%Description:%  Calculates the maximum likelihood correlation matrix estimate of the%  received signals from different channels.%%Algoritm:%  R = 1/L * X*X', where R is the correlation matrix,%  L is the number of snapshots,%  X is the data matrix with different channels as different%  rows and different snapshots as different columns.%%--------%Forward-Backward Averaging%Synopsis:%  Rout = ecorrm(inData, 'forback')%  Rout = ecorrm(inData, 'forback', rangeIx, cpiIx)%%Description:%  This method requires an ULA. When used on the 'expAnt' antenna type%  this probably means that the calibration and near field compensations%  must be performed on the signals (with "sigcomp2") and not on the%  steering matrix (with "setcal1"). This method can only handle two%  coherent signals. For more information about this method, see [2] p. 75-76.%%Algoritm:%  Rfb = 0.5*(R+J*conj(R)*J);%  where J is a (L x L) exchange matrix, whose components are zero except for%  ones in the anti-diagonal, R is the ML-estimate, and Rfb is the modified%  estimate.%%--------%Spatial Smoothing%Synopsis:%  Rout = ecorrm(inData, 'spatsmooth', [], [], noElemSub)%  Rout = ecorrm(inData, 'spatsmooth', [], [], noElemSub, channelIx)%  Rout = ecorrm(inData, 'spatsmooth', rangeIx, cpiIx, noElemSub, channelIx)%%Output and Input:%  noElemSub (IntScalarT): Number of elements in the subarrays.%  channelIx [D](IndexT): Specifies which channels of the original steering%    vector to use. The number of channels to use must be equal to%    "noElemSub". If all channels are equal, which is a requirement for%    this method, it does not matter which channels are chosen.%    Default value is (1:noElemSub).%%Description:%  In this method the array antenna is split into a number of overlapping%  subarrays whose correlation matrices are averaged. The number K of%  subarrays used is K = N - noElemSub +1, where N is the total number%  of channels (elements) in the array. For each additional subarray the%  method can handle one extra coherent source signal. A drawback with this %  method is that the size of the antenna decreases, since the subarrays%  are smaller than the original array.%%  This method requires a regular array antenna with a translational%  invariant property, e.g. an ULA. When used on the 'expAnt' antenna type%  this probably means that the calibration and near field compensations%  must be performed on the signals (with "sigcomp2") and not on the%  steering matrix (with "setcal1").%%  For more information about this method, see [2] p. 75-76.%%Algoritm:%  Rss = zeros(noElemSub,noElemSub);%  for n=1:noSubArray%    Rss = Rss + R(n:n+noElemSub-1, n:n+noElemSub-1);%  end%  Rout = (1/noSubArray)*Rss;%  where noSubArray is the number of subarrays.%%--------%Diagonal Loading%Synopsis:%  Rout = ecorrm(inData, 'diagload', [], [], loadVal)%  Rout = ecorrm(inData, 'diagload', rangeIx, cpiIx, loadVal)%%Output and Input:%  loadVal (RealScalarT):%%Description:%  An amount, which is determined by the input parameter "loadVal", of%  the identity matrix is added to the correlation matrix. Diagonal loading%  reduces the fluctuation of the small eigenvalues of the correlation%  matrix [5,3,4]. A suitable size of "loadVal" is in the order of the noise% variance [5].%%Algoritm:%%--------%Diagonal Loading relative noise eigenvalues%Synopsis:%  Rout = ecorrm(inData, 'diagloadeig', [], [], relLoadVal)%  Rout = ecorrm(inData, 'diagloadeig', [], [], relLoadVal, noSrc)%  Rout = ecorrm(inData, 'diagloadeig', rangeIx, cpiIx, relLoadVal)%  Rout = ecorrm(inData, 'diagloadeig', rangeIx, cpiIx, relLoadVal, noSrc)%%Output and Input:%  relLoadVal (RealScalarT): Load relative the noise eigenvalues (noise power).%  noSrc [D](IntScalarT): Number of signal sources. This means that there%    are ((number-of-channels) - noSrc) noise eigenvalues. If this value%    is too low, the estimated noise power will be somewhat too low. If%    this value is too high, the estimated noise power will be too high%    (maybe much too high). Default value is = 1, which means that only the%    smallest eigenvalue is used.%%Description:%  An amount, which is determined by the input parameter "relLoadVal"%  multiplied with the noise power, of the identity matrix is added to the %  correlation matrix. Diagonal loading reduces the fluctuation of the small %  eigenvalues of the correlation matrix [5,3,4]. A suitable size of %  "loadVal" is in the order of the noise variance (power) [5]. The noise%  power is calculated as the mean value of the smallest eigenvalues of the %  spatial correlation matrix%%Algoritm:%%--------%Equal Noise Eigenvalues.%Synopsis:%  Rout = ecorrm(inData, 'equeig')%  Rout = ecorrm(inData, 'equeig', [], [], [], noSrc)%  Rout = ecorrm(inData, 'equeig', rangeIx, cpiIx)%  Rout = ecorrm(inData, 'equeig', rangeIx, cpiIx, [], noSrc)%%Output and Input:%  noSrc [D](IntScalarT): Number of signal sources. This means that there%    are ((number-of-channels) - noSrc) noise eigenvalues. If this value%    is too low, the estimated noise power will be somewhat too low. If%    this value is too high, the estimated noise power will be too high%    (maybe much too high). Default value is = 1, which means that only the%    smallest eigenvalue is used.%%Description:%  All noise eigenvalues, as determined by "noSrc", are set equal to the%  noise power. The noise power is calculated as the mean value of the%  smallest eigenvalues of the spatial correlation matrix.%%Algoritm:%%--------%Norming relative the noise eigenvalues.%Synopsis:%  Rout = ecorrm(inData, 'normeig')%  Rout = ecorrm(inData, 'normeig', [], [], [], noSrc)%  Rout = ecorrm(inData, 'normeig', rangeIx, cpiIx)%  Rout = ecorrm(inData, 'normeig', rangeIx, cpiIx, [], noSrc)%%Output and Input:%  relLoadVal (RealScalarT):%  noSrc [D](IntScalarT): Number of signal sources. This means that there%    are ((number-of-channels) - noSrc) noise eigenvalues. If this value%    is too low, the estimated noise power will be somewhat too low. If%    this value is too high, the estimated noise power will be too high%    (maybe much too high). Default value is = 1, which means that only the%    smallest eigenvalue is used.%%Description:%  All eigenvalues (both signal and noise) are set equal to the noise power.%  The noise power is calculated as the mean value of the smallest eigenvalues %  of the spatial correlation matrix.%%Algoritm:%%--------%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.

⌨️ 快捷键说明

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