📄 ranfilt.m
字号:
function [sigOut, basisMat, rangePosOut] = ranfilt(sigIn, method, model, modelParam, rangeChoice, taperCoeff, interCorrMat, steVecFlag, extraParam, orthBeamFlag)%RANFILT Range linear filtering (i.e. pulse compression).%%--------%Synopsis:% sigOut = ranfilt(sigIn)%% [sigOut, basisMat, rangePosOut] = ranfilt(sigIn, method,% {antenna, waveform}, {propSpeed, interpMethod, storageClass, ...% boundaryMethod}, rangeChoice, taperCoeff, interCorrMat, steVecFlag, ...% extraParam, orthBeamFlag)%% [sigOut, basisMat, rangePosOut] = ranfilt(sigIn, keywordList)%%Description:% Range linear filtering (i.e. pulse compression).%% This function works like beamforming functions in the way that range % steering vectors are created which then are correlated with the input% signal. The range of the steering vectors are specified by the input % parameter "rangeChoice". It is not necessary that the ranges span all% ranges in the input signal or are multiples of one range bin.% This function calls the general functions "calcfiltinit" and "calcfiltproc" % for the actual processing. This means that the methods implemented in% these functions can be tried but it is not sure that they are all are % applicable for range filtering (this function). See also below about% the input parameter "method".%% After the execution of this function, targets in range bin 1 is located% in element number 1 in the output signal matrix. This is different from % the old function "pulscomp".%% This function can be very memory consuming, especially if there are% many range bins in the input signal. This function can require long % execution time, especially if many ranges are specified with the input % parameter "rangeChoice".%%Output and Input:% sigOut (RxRadarSigT): Output radar signal.% basisMat ():% rangePosOut (RealVectorT.'): The tested ranges [m].%% sigIn (RxRadarSigT): Input radar signal.%% keywordList [D](CellArrayT): A cell array with input parameter name% (keyword) and value pairs, see the example below. All input parameters% of this function following "sigIn" can be used. The use of keywords% is to simplify calls to this function with many input parameters.%% method (StringT): Filter method. See help text of function "calcfiltinit"% for sections about each method.% = 'conv': Non-adaptive pulse compression in the range domain (convolution).% This is tested and works.% = 'aconv': Adaptive pulse compression in the range domain (convolution). % This is pulse compression with adaptive sidelobe cancelation (ASLC).% A range interference correlation matrix should be specified with the % "interCorrMat" input parameter. In this way disturbing signals at some % ranges should be suppressed. Not tested for range filtering.% = 'capon': Capon's method. Unsure if this works for range filtering. % See for example "dbtex22".% = 'fft': Discrete fourier transform. Cannot be used with this function.% = 'ifft': Inverse discrete fourier transform. Cannot be used with this % function.% = 'music : MUSIC. Not tested for range filtering.% antenna [D](AntDefT): Antenna model to use. If this parameters is an% empty matrix, the antenna model in the input signal "sigIn" is used% instead.% waveform [D](WaveformT): Waveform (time properties) model to use. % If this parameters is an empty matrix, the waveform model in the input% signal "sigIn" is used instead.% propSpeed [D](RealScalarT): Propagation speed of the waves [m/s].% Default = speed of light in free space.% interpMethod [D](StringT): Interpolation method to use when calculating% the range steering matrices. See function "ranstemat" for possible% methods.% storageClass [D](StringT): Specifies the MATLAB storage class for range% steering matrices. See function "ranstemat" for more information.% boundaryMethod [D](StringT): How to handle the boundaries of the PRI.% See function "ranstemat" for more information.% rangeChoice [D](RealVectorT.'): One or more ranges to test [m].% taperCoeff [D](CxVectorT): Tapering coefficients to use.% interCorrMat [D](CxMatrixT): Interference signal correlation matrix. % This is used to adaptively suppress the interference.% steVecFlag [D](BoolT): Specifies whether the steering vector (= 1, default) % or filter weights (= 0) will be used in the filtering.% extraParam [D](): The use and data type depend on filter method. See help % text of function "calcfiltinit" for sections about each method.% orthBeamFlag [D](BoolT): 1 = orthogonalize the weight vectors. % 0 = Do not do it (default).%%--------%Conventional Pulse Compression.%Synopsis:%%Output and Input:%%Description:%%Algoritm:%%--------%Conventional Pulse Compression.%Synopsis:%%Output and Input:%%Description:%%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.% ... = 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.)% Only the method 'conv' ist tested and found to work. See for example % "dbtex22".%%Known Bugs:% *) When using methods , e.g. 'capon' or 'music', requiring a correlation % matrix, this matrix is currently estimated using the pulses.% If the number of range bins is larger than the number of pulses, % which often is the case, the correlation matrix will be singular and% cannot be used. % Consequently these methods will not work in these cases. Warning messages% like the following will appear:% Warning: Matrix is close to singular or badly scaled.% Results may be inaccurate. RCOND = 1.599693e-20.%% *) This function do not use the function "calcfiltsig".%% *) If the waveform parameter "pModulation" is not specified for radar % measurements this function will not work. See the function "expsig1"% for more information.%% *) For Capon, only the non-adapted steering matrix is stored. See the % function "calcfiltinit".%%References:% [1]: Bj鰎klund S.: "DBT, A MATLAB Toolbox for Radar Signal Processing.% Reference Guide", FOA-D--9x-00xxx-408--SE, To be published.%%See Also:% calcfiltinit, pulsecomp, pulscomp, pulfilt, spafilt% * DBT, A Matlab Toolbox for Radar Signal Processing *% (c) FOA 1994-2000. See the file dbtright.m for copyright notice.%% Start : 990301 Svante Bj鰎klund (svabj).% Latest change: $Date: 2001/08/31 14:34:16 $ $Author: svabj $.% $Revision: 1.11 $% *****************************************************************************%Child functions for "ranfilt" rev. 1.9:% calcfiltproc % ranstemat % getm3 % dbtinfo % chkdtype % calcfiltinit % setrantrans % getranbinlen % sigsize % speedoflight % iscell % The comment "NFF" stands for "New filter function" and gives tips to% necessary changes when using this function as a template for new filter % functions (in other dimensions).% ----------------------------------------------------------------------- %% Handle input parameters% ----------------------------------------------------------------------- %arginNo=1;if (nargin < arginNo) error('DBT-Error: To few input parameters.')endarginNo = arginNo +1;% ****************** Add missing input parameters ******************if (nargin < arginNo) method = [];endarginNo = arginNo +1;if (nargin < arginNo) model = [];endarginNo = arginNo +1;if (nargin < arginNo) modelParam = [];endarginNo = arginNo +1;if (nargin < arginNo) rangeChoice = [];endarginNo = arginNo +1;if (nargin < arginNo) taperCoeff = [];endarginNo = arginNo +1;if (nargin < arginNo) interCorrMat = [];endarginNo = arginNo +1;if (nargin < arginNo) steVecFlag = [];endarginNo = arginNo +1;if (nargin < arginNo) extraParam = [];endarginNo = arginNo +1;if (nargin < arginNo) orthBeamFlag = [];endarginNo = arginNo +1;% *************** Evalute the list of keywords ***************% If the input parameter "method" is a cell array, it is interpreted as a% list of input parameter name (keyword) and value pairs.% The values of these keywords are assigned to the local variables with% the same name as the keywords. The use of keywords is to make calls to% this function simpler.if (iscell(method)) keywordList = method; lenExtra = length(keywordList); if (mod(lenExtra,2) ~= 0), error('DBT-Error: Keyword value missing.'),end%if for n = 1:2:length(keywordList) eval([keywordList{n} '= keywordList{n+1};' ]); end%for nendarginNo = arginNo +1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -