📄 spastevec.m
字号:
function a = spastevec(antenna, doas, lambda, focusDist)% *****************************************************************************% * DBT, A Matlab Toolbox for Radar Signal Processing *% (c) FOA 1994-2000. See the file dbtright.m for copyright notice.%% function a = spastevec(antenna, doas, lambda, focusDist)%% Calculates the ideal steering vector for specified angles for a particular% distance. This function should not be called. Use "spastemat" instead.%% Start : 960327 Svante Bj鰎klund (svabj).% Latest change: $Date: 2000/10/16 15:22:07 $ $Author: svabj $.% $Revision: 1.6 $% *****************************************************************************%dbtwarning('Using "spastevec". It should not be used.')global thSign % Defines the reference direction for the theta angle in DOA:s. % Defined in "defant".% ----------------------------------------------------------------------- %% Handle input parameters% ----------------------------------------------------------------------- %% ****************** Add missing input parameters ******************% ****************** Default values ******************if (nargin < 4) focusDist = Inf;end% ****************** Error check input parameters ******************%if (focusDist ~= Inf)% error('DBT-Error: Only focus on infinity is implemented.')%end % This test required unnecessary execution time.if (size(doas,2) > 1) error('DBT-Error: spastevec is only implemented for one DOA.')end% ----------------------------------------------------------------------- %% Code common to all antenna types.% ----------------------------------------------------------------------- %% ****************** Pick out fields from input parameters. ******************antennaType = antenna.antennaType;% ----------------------------------------------------------------------- %% Special antenna types.% ----------------------------------------------------------------------- %if isfield(antenna,'name') if (strcmp(antenna.name,'aimtEx') | ... strcmp(antenna.name,'expAnt')) disp('Warning: Calls to spastevec are obsolete. Call spastemat instead.') a = spastemat(antenna, doas, lambda, focusDist); return endend% ----------------------------------------------------------------------- %% Uniform Linear Array (ULA) and Non-Uniform Linear Array (LA).%% Start: 97xxxx David Rejdemyhr (davrej).% ----------------------------------------------------------------------- %if (strcmp(antennaType,'ULA') | strcmp(antennaType,'LA')) if (size(doas,1) > 1) error('DBT-Error: Regards to phi not taken when calc. steering vector for ULA'); end noElem = antenna.noElem; if (strcmp(antennaType,'ULA')) distElem = antenna.distElem; elemPos = distElem*(0:noElem-1)'; else elemPos = antenna.elemPos; end a = exp(thSign*j*2*pi*(elemPos/lambda)*sin(doas(1,1))); % Array faktor. w = antenna.element.beamSpaceTrans; a = a * (w' * spastevec(antenna.element, doas, lambda, focusDist));% ----------------------------------------------------------------------- %% Antenna Elements (one channel antennas).%% Start: 97xxxx David Rejdemyhr (davrej).% ----------------------------------------------------------------------- %elseif (strcmp(antennaType,'elem'))% error('DBT-Error: Antenna element calculation is obsolete, use spastemat instead'); pType = antenna.patternType; if (strcmp(pType,'isotrop')) a = 1; elseif (strcmp(pType,'func')) x = doas(1,1); a = eval(antenna.patternFunc); % x is the evaluated variable. else error('DBT-Error: Illegal pattern type for element.') end%if% ----------------------------------------------------------------------- %% The else branch.% ----------------------------------------------------------------------- %else error('DBT-Error: Not implemented for desired antenna type.')end%if
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -