function [x,y,z]=antenna3(n,deta_d,deta_p,loc,unit)
%画阵列天线3维方向图,调用方式 antenna3(n,deta_d,deta_p,loc,unit);
%返回值可用于进一步分析截面方向性,各参数含义如下:
%n 表示天线元的个数;
%deta_d 代表阵元天线间距与波长的比值,此处默认阵列为等间距阵;
%deta_p 代表阵元天线电流相位差,此处默认阵列为等幅,等差相位阵列;
%loc 代表单元天线与阵列取向关系(0表示单元天线与阵列垂直,1表示单元天线与阵列平行);
%unit 代表单元天线的类型(0表示理想点源,1表示电偶极子天线,2表示半波振子);
%其中loc默认值为0(垂直),unit默认值为2(半波振子).
%例:有一10元阵列,阵元间距为0.5个波长,相位差为0,单元天线取向与阵列垂直,单元天线为半波振子
%则做图时函数调用方式为:antenna3(10,0.5,0,0,2)或利用默认值:antenna3(10,0.5,0)
%Author:王永 Data:2011年2月15日
if nargin < 5 %当输入参数少于5个时
unit=2; %将参数unit设为默认值2.
end
if nargin < 4 %当输入参数少于4个时
loc=0; %将参数loc设为默认值0.
end
if nargin < 3
display('缺少参数,请参照函数说明正确输入参数!');
return;
end
if n>1 && deta_d<=0
display('阵元距离设置错误,请参照函数说明正确输入参数!');
return;
end
[theta,pha]=meshgrid(0.001:0.02:pi,0:0.02:2*pi);
ph=2*pi*deta_d.*cos(theta)+deta_p;
%阵因子方向函数
fa=(sin(n.*ph/2)+eps)./(sin(ph/2+eps));
%以下根据不同类型,不同取向阵元天线,计算单元因子方向函数f1。
if loc==0
if unit==0
f1=1;
elseif unit==1
f1=sqrt(1-(sin(theta).*cos(pha)).^2);
elseif unit==2
%分母加一极小值eps以修正极点,防止分母为0时出现无穷大。
f1=cos(0.5*pi.*sin(theta).*cos(pha))./(sqrt(1-(sin(theta).*cos(pha)).^2)+eps);
else
display('请参照函数说明正确选择单元天线类型参数unit(可选项0,1,2)');
return;
end
elseif loc==1
if unit==0
f1=1;
elseif unit==1
f1=sin(theta);
elseif unit==2
f1=abs(cos(0.5*pi.*cos(theta))./(sin(theta)+eps));
else
display('请参照函数说明正确选择单元天线类型参数unit(可选项0,1,2)');
return;
end
else
display('请参照函数说明正确输入天线取向参数loc(可选项0,1)');
return;
end
%由方向图乘积定理计算阵列天线总辐射方向函数f。
f=abs(f1.*fa);
%归一化方向函数。
f=f/max(max(f));
%转化为直角坐标系。
x=f.*sin(theta).*cos(pha);
y=f.*sin(theta).*sin(pha);
z=f.*cos(theta);
%画立体方向图。
figure
mesh(x,y,z)
view(-78,20)
title('Antenna 3D Map')
评论1