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

📄 defant.m

📁 阵列信号处理的工具箱
💻 M
📖 第 1 页 / 共 2 页
字号:
if isempty(antennaType)  antennaType = 'baseAnt';end%if% ****************** Antenna definitions ******************%if (0)% ----------------------------------------------------------------------- %%  Base antenna definition.%  ant = defant('baseAnt', antennaType, noElem)% ----------------------------------------------------------------------- %if (strcmp(antennaType, 'baseAnt'))  antennaType = in1;  noElem = in2;  ant.dataType = 'AntDefT';  ant.version = antDefVersion;  ant.name = 'none';  ant.antennaType = antennaType;  ant.noElem = noElem;  ant.beamSpaceTrans = 1;  ant.Dmax = 1;			% Maximum directivity.  ant.efficiency = 1;		% Conduction and dielectric efficiency ec*ed.if (0)% ----------------------------------------------------------------------- %%  Base antenna element definition.%  ant = defant('baseElemAnt', antennaType, noElem patternType)% ----------------------------------------------------------------------- %%elseif (strcmp(antennaType, 'baseElemAnt'))  antennaType = in1;  noElem = in2;  ant = defant('baseAnt', 'elem', noElem)  ant.patternType = patternType;  %ant.elemOrient = elemOrient;  ant.polarization = 1;		% CxVectorT with three elements:    % polarization(1): x-coordinate.    % polarization(2): y-coordinate.    % polarization(3): z-coordinate.%end%ifend%if (0)% ----------------------------------------------------------------------- %%  'isotropElem' : Isotropical antenna element.% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'isotropElem'))  if (nargin > 1), error('DBT-Error: Too many input parameters.'), end%if  ant.dataType = 'AntDefT';  ant.version = antDefVersion;  ant.name = 'none';  ant.antennaType = 'elem';  ant.patternType = 'isotrop';  %ant.lambda = in1;		% Removed this field.  ant.noElem = 1;  ant.beamSpaceTrans = 1;% ----------------------------------------------------------------------- %%  'pattFuncElem'%  Antenna element whose antenna pattern is given by a function.% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'pattFuncElem'))  if (nargin > 3), error('DBT-Error: Too many input parameters.'), end%if  if (isempty(in2)), in2 = zeros(2,1); end%if  elemOrient = zeros(2,1);  elemOrient(1:size(in2,1),:) = in2; % Enabling only theta as directional angle  ant.dataType = 'AntDefT';  ant.version = antDefVersion;  ant.name = 'none';  ant.antennaType = 'elem';  ant.patternType = 'func';  ant.patternFunc = in1;  ant.elemOrient = elemOrient;  %ant.lambda = in2;		% Removed this field.  ant.noElem = 1;  ant.beamSpaceTrans = 1;% ----------------------------------------------------------------------- %%  'ULA' : Uniform linear array.% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'ULA'))  if ((nargin > 4) | (length(in1) > 2))    error('DBT-Error: Too many input parameters.')  end%if  noElem   = in1(1,1);  distElem = in1(1,2);  %lambda   = in1(1,3);  if (nargin < 4)    taper    = ones(noElem,1);  else    taper    = in3;  end  ant.dataType = 'AntDefT';  ant.version = antDefVersion;  ant.name = 'none';  ant.antennaType = antennaType;  ant.noElem = noElem;  %ant.lambda = lambda;         % Removed this field.  ant.distElem = distElem;  ant.element = in2;  ant.beamSpaceTrans = taper;% ----------------------------------------------------------------------- %%  'isotropULA' : Uniform linear array with isotropical antenna element.% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'isotropULA'))  if ((nargin > 2) | (length(in1) > 2))    error('DBT-Error: Too many input parameters.')  end%if  noElem = in1(1,1);  %lambda = in1(1,3);  elem = defant('isotropElem');  ant  = defant('ULA', in1, elem, ones(noElem,1));% ----------------------------------------------------------------------- %%  'LA' : Non-Uniform linear array.% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'LA'))  if (nargin > 5), error('DBT-Error: Too many input parameters.'), end%if  elemPos   = in1;  if ((size(elemPos,2) > 1) & (size(elemPos,1) == 1))	% Test #1 of elemPos    disp('elemPos should be a column vector, transposing...')    elemPos = elemPos';  elseif ((size(elemPos,1) > 1) & (size(elemPos,2) > 1))    error('DBT-Error: The element position field must be a vector')  end%if  if (elemPos(1) ~= 0)					% Test #2 of elemPos    error('DBT-Error: First element in elemPos should be 0, since it is a relative position')  end%if  lambda   = in2;  if (nargin < 5)      taper    = ones(size(elemPos));  else    taper    = in4;  end%if  ant.dataType = 'AntDefT';  ant.version = antDefVersion;  ant.name = 'none';  ant.antennaType = antennaType;  %ant.lambda = lambda;		% Removed this field.  ant.elemPos = elemPos;  ant.noElem = length(elemPos);  ant.element = in3;  ant.beamSpaceTrans = taper;% ----------------------------------------------------------------------- %% 'array' : Array antenna.%% ant = defant('array', elemPos, [], element, [], elemOrient, couplingMat)% ant = defant(antennaType, in1, in2, in3, in4, in5, in6, in7)%% Start: 980515 Svante Bj鰎klund (svabj).% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'array'))%elseif (strcmp(antennaType, 'array') | strcmp(antennaType, 'BFArray'))  noElem = length(in1);  elemPos = zeros(3,noElem);  elemPos(1:size(in1,1),:) = in1;  if ~isempty(in4)	% beamSpaceTrans    error('A beamSpaceTrans (in4) can not be specified for "array" antenna type.');  end%if  if isempty(in5)	% elemOrient    in5 = zeros(3,noElem);  end%ifif (0)  if iscell(in3)	% element    nElemDef = length(in3);  else    nElemDef = 1;  end  %size(in4),nElemDef  if (size(in4,1) ~= nElemDef)		% beamSpaceTrans    error('Illegal number of rows of beamSpaceTrans.');  end  if (size(in4,2) ~= noElem)		% beamSpaceTrans    error('Illegal number of columns of beamSpaceTrans.');  endelse  if (strcmp(antennaType, 'BFArray'))     chkdtype(in4,'CxMatrixT')		% beamSpaceTrans     if (size(in4,1) ~= noElem)		% beamSpaceTrans      error('Illegal number of rows of beamSpaceTrans.');    end  end%ifend%if (0)  ant = setr([], 'dataType',  	'AntDefT');  ant = setr(ant,'version', 	antDefVersion);  ant = setr(ant,'name','none');  ant = setr(ant,'antennaType',	antennaType);  ant = setr(ant,'elemPos',	elemPos);  ant = setr(ant,'noElem',	noElem);  ant = setr(ant,'element', 	in3);  %ant = setr(ant,'beamSpaceTrans',in4);  ant = setr(ant,'elemOrient',	in5);  ant = setr(ant,'couplingMat',	in6);% ----------------------------------------------------------------------- %% 'beamform' : Beamforming virtual antenna.%% ant = defant('beamform',  element, beamSpaceTrans)% ant = defant(antennaType, in1, in2, in3, in4, in5, in6, in7)%% Start: 980520 Svante Bj鰎klund (svabj).% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'beamform'))  ant.dataType = 'AntDefT';  ant.version = antDefVersion;  ant.name = 'none';  ant.antennaType = antennaType;  ant.noElem = size(in2,2);		% Number of channels out.  ant.element = in1;  ant.beamSpaceTrans = in2;  %ant = setr(ant,'noElem',	size(ant.element.beamSpaceTrans));    % Forgotten row oder column in "size" command.    % Number of channels or lobes out from the antenna "element"    % == in to the antenna on this level.% ----------------------------------------------------------------------- %% 'BFArray' : Array antenna with beamforming.%% ant = defant('BFArray', elemPos, [], element, beamSpaceTrans, elemOrient,%    couplingMat)% ant = defant(antennaType, in1, in2, in3, in4, in5, in6, in7)%% Start: 980607 Svante Bj鰎klund (svabj).% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'BFArray'))  ant1 = defant('array', in1, in2, in3, [], in5, in6, in7);  ant = defant('beamform', ant1, in4);% ----------------------------------------------------------------------- %%  'aimtEx2' : The AIMT application example antenna 2. One-dimensional.%%  Implementation by svabj.% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'aimtEx2'))%  posErr (Vector of PosT): Position errors [m] for the 51 elements. Size = (51 X 1).  if (nargin > 2), error('DBT-Error: Too many input parameters.'), end%if  if (isempty(in1))    posErr = 0;  else    posErr = in1;  end%if  % -------  Create antenna elements. -------  nElem = 51;  elem21 = defant('pattFuncElem', 'sqrt(cos(x(1,:)))');  elem2 = cell(1,nElem);  for n = 1:nElem, elem2{n}=elem21; end%for n  %elem2 = repmat({},1,nElem);	% Alternative way to create elem2.  % -------  Create beamforming matrix to do subarray beamforming.  -------  T = zeros(nElem,25);  for n=1:25    T((2*n-1):(2*n-1)+2,n) = [0.5 1 0.5].';  end%for n  elemPos = [0:0.5:25]*0.1 + posErr;  ant = defant('BFArray',elemPos,[],elem2,T);% ----------------------------------------------------------------------- %%  'aimtEx' : The AIMT application example antenna. One-dimensional.%%  Implementation by FA.% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'aimtEx'))  % The subarrays are in the x-direction. The main digital array is in the  % x-direction.  if (nargin > 1), error('DBT-Error: Too many input parameters.'), end%if  noElemMain 	= 25;  noElemSub 	= 3;  lambda 	= 0.1;  distElemMain	= lambda;  distElemSub	= lambda/2;  taper = [0.5 1 0.5]';  elem 	   = defant('pattFuncElem', 'sqrt(cos(x(1,:)))');  subarray = defant('ULA', [noElemSub, distElemSub], elem, taper);  ant 	   = defant('ULA', [noElemMain, distElemMain], subarray, ...    ones(noElemMain,1));  ant.name = 'aimtEx';% ----------------------------------------------------------------------- %%  'aimtExPlan' : The AIMT application example antenna. Two-dimensional.%%  Not used yet. Implementation not finished.% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'aimtExPlan'))  % The subarrays are in the y-direction. The main digital array is in the  % x-direction.  error('DBT-Error: Implementation not finished.');  if (nargin > 1), error('DBT-Error: Too many input parameters.'), end%if  noElemSide 	= 25;  noElemUp 	= 10;  lambda 	= 0.1;  distElemSubarray 	= 0.05;  distElemMainArray 	= 0.1;  taperSub = []; % This must be changed.  taperDefaultMain = []; % This must be changed.  elem 	   = defant('pattFuncElem', 'sqrt(cos(x(1,:)))');  subarray = defant('UPA', [noElemUp, distElemSubarray], elem, taperSub)  ant 	   = defant('ULA', [noElemSide, distElemMainArray], ...    subarray, taperDefaultMain);  ant.name = 'aimtExPlan';% ----------------------------------------------------------------------- %%  'expAnt' : The AIMT experimental antenna.% ----------------------------------------------------------------------- %elseif (strcmp(antennaType, 'expAnt')) 	% The AIMT experimental antenna.  if (nargin > 1)    error(['DBT-Error: Too many input parameters. Cal. file is set by ',...      'the function setcal1.'])  end%if  global c0  c0 = 2.99792458e8;			% The speed of light.  noElem = 12;  distElem = 0.0450; % Distance in meters. Should we use variable "xel"    % instead in steering matrix calculation?  %lambda = NaN;	% This is only a temporary value. The frequency    % can be found in the .dbs file. The correct value is set by the    % function expsig1.  ant = defant('isotropULA', [noElem, distElem]);  ant.name = 'expAnt';% ----------------------------------------------------------------------- %%  The ELSE branch.% ----------------------------------------------------------------------- %else  error('DBT-Error: Desired antenna type is not implemented.')end%ifif isfield(ant,'lambda')  error('DBT-Error: The field lambda should not exist in AntDefT any more.')end%if

⌨️ 快捷键说明

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