📄 array_core.m
字号:
m=n/2;
for i=1:m
a(i)=0;
for q=i:m
aq(q)=(-1)^(m-q)*z0^(2*q-1)*factorial(q+m-2)*(2*m-1)/(factorial(q-i)*factorial(q+i-1)*factorial(m-q));
a(i)=a(i)+aq(q);
end
end
elseif f1==1 % n is odd
m=(n+1)/2;
if n==1
en=2;
else
en=1;
end
for i=1:m
a(i)=0;
for q=i:m
aq(q)=(-1)^(m-q)*z0^(2*(q-1))*factorial(q+m-3)*(2*(m-1))/(en*factorial(q-i)*factorial(q+i-2)*factorial(m-q));
a(i)=a(i)+aq(q);
end
end
end
%--------------------------------------------------------------------------------------------
function AF=AF_Tsch(n,dn,theta_m,beta,an)
% Initialization
%----------------
syms theta u real; % theta,u,a is variables type real
u=pi*dn*cos(theta)+beta/2;
AF=0;
% Array factor printing
f1=mod(n,2); % flag to no of elements
if f1==0 % n is even
m=n/2;
for i=1:m
AF_even(i)=vpa(an(i),5)*cos((2*i-1)*u);
AF=AF+AF_even(i);
end
elseif f1==1 % n is odd
m=(n+1)/2;
for i=1:m
AF_odd(i)=vpa(an(i),5)*cos(2*(i-1)*u);
AF=AF+AF_odd(i);
end
end
%--------------------------------------------------------------------------------------------
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%--------------------------------------------------------------------------------------------
%------------------------------------------------------
function AF=pl_array(n_x,n_y,dn_x,dn_y,epsi_x,epsi_y);
% planar array
%------------------------------------------------------
AF=(1/n_x*sin(n_x/2*epsi_x)/sin(1/2*epsi_x))*(1/n_y*sin(n_y/2*epsi_y)/sin(1/2*epsi_y));
%--------------------------------------------------------------------------------------------
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
% End of Main Array Function
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%--------------------------------------------------------------------------------------------
%--------------------------------------------------------------------------------------------
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
% Array Calculations Functions
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%--------------------------------------------------------------------------------------------
%------------------------------------------------------
function zeros_AF=zeros_AF(AF)
% Zeros of Array Factor Calculatioms
%------------------------------------------------------
zeros_AF=vpa(solve(char(AF),'theta')*180/pi,5);
i=1;
while i<=length(zeros_AF)
if isreal(zeros_AF(i))==0
zeros_AF(i)=[];
else
i=i+1;
end
end
%--------------------------------------------------------------------------------------------
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
% End of Array Calculations Function
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%--------------------------------------------------------------------------------------------
%--------------------------------------------------------------------------------------------
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
% Array Control Functions
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%--------------------------------------------------------------------------------------------
function array_ctrl(h2)
switch h2
case 0
ctrl_dim % Array dimension control
case 1
ctrl_type % Array type control
case 2
ctrl_config % Array configuration control
end
%--------------------------------------------------------------------------------------------
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%--------------------------------------------------------------------------------------------
%------------------------------------------------------
function ctrl_dim
% Array dimension control
%------------------------------------------------------
h_dim=findobj(gcbf,'tag','array_dim');
dim=get(h_dim,'value');
h_type=findobj(gcbf,'tag','type_list');
h_config=findobj(gcbf,'tag','config_list');
% Default
%--------------------
set(h_config,'enable','on');
if dim==1
set(h_type,'string', {'Linear Array (Uniform Spacing & Amplitude)'...
'Linear Array (Uniform Spacing & Non Uniform Amplitude)'...
'Linear Array (Binomial Array)'...
'Linear Array (Dolph-Tscebyscheff Array)'},'value',1);
else
set(h_type,'string',{'Planar Array' },'value',1 );
set(h_config,'enable','off');
end
ctrl_type
%--------------------------------------------------------------------------------------------
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%--------------------------------------------------------------------------------------------
%------------------------------------------------------
function ctrl_type
% Array type control
%------------------------------------------------------
h_dim=findobj(gcbf,'tag','array_dim');
dim=get(h_dim,'value');
h_type=findobj(gcbf,'tag','type_list');
type=get(h_type,'value');
h_config=findobj(gcbf,'tag','config_list');
h_no_elem_ok=findobj(gcbf,'tag','no_elem_ok');
h_n=findobj(gcbf,'tag','no_elem');
h_dn=findobj(gcbf,'tag','spacing');
h_theta_m=findobj(gcbf,'tag','theta_m');
h_phi_m=findobj(gcbf,'tag','phi_m');
h_n_x=findobj(gcbf,'tag','no_elem_x');
h_n_y=findobj(gcbf,'tag','no_elem_y');
h_dn_x=findobj(gcbf,'tag','spacing_x');
h_dn_y=findobj(gcbf,'tag','spacing_y');
h_R0_dB=findobj(gcbf,'tag','R0');
h_n_x_str=findobj(gcbf,'tag','n_x_str');
h_dn_x_str=findobj(gcbf,'tag','dn_x_str');
h_dn_y_str=findobj(gcbf,'tag','dn_y_str');
h_R0_str=findobj(gcbf,'tag','R0_str');
h_theta_m_str=findobj(gcbf,'tag','theta_m_str');
h_phi_m_str=findobj(gcbf,'tag','phi_m_str');
h_a(1)=findobj(gcbf,'tag','a1');
h_a(2)=findobj(gcbf,'tag','a2');
h_a(3)=findobj(gcbf,'tag','a3');
h_a(4)=findobj(gcbf,'tag','a4');
h_a(5)=findobj(gcbf,'tag','a5');
h_a(6)=findobj(gcbf,'tag','a6');
h_a(7)=findobj(gcbf,'tag','a7');
h_a(8)=findobj(gcbf,'tag','a8');
h_a(9)=findobj(gcbf,'tag','a9');
h_a(10)=findobj(gcbf,'tag','a10');
h_a_str(1)=findobj(gcbf,'tag','a1_str');
h_a_str(2)=findobj(gcbf,'tag','a2_str');
h_a_str(3)=findobj(gcbf,'tag','a3_str');
h_a_str(4)=findobj(gcbf,'tag','a4_str');
h_a_str(5)=findobj(gcbf,'tag','a5_str');
h_a_str(6)=findobj(gcbf,'tag','a6_str');
h_a_str(7)=findobj(gcbf,'tag','a7_str');
h_a_str(8)=findobj(gcbf,'tag','a8_str');
h_a_str(9)=findobj(gcbf,'tag','a9_str');
h_a_str(10)=findobj(gcbf,'tag','a10_str');
% Default
%--------------------
set(h_config,'enable','on');
set(h_no_elem_ok,'visible','off');
set(h_n,'visible','on');
set(h_dn,'visible','on');
set(h_theta_m,'visible','on','enable','off');
set(h_phi_m,'visible','off');
set(h_n_x,'visible','off');
set(h_dn_x,'visible','off');
set(h_n_y,'visible','off');
set(h_dn_y,'visible','off');
set(h_R0_dB,'visible','off','string','20');
set(h_a(1),'visible','off');
set(h_a(2),'visible','off');
set(h_a(3),'visible','off');
set(h_a(4),'visible','off');
set(h_a(5),'visible','off');
set(h_a(6),'visible','off');
set(h_a(7),'visible','off');
set(h_a(8),'visible','off');
set(h_a(9),'visible','off');
set(h_a(10),'visible','off');
set(h_n_x_str,'string','No of Elements');
set(h_dn_x_str,'string','Normalized Spacing');
set(h_R0_str,'string','R0_dB','visible','off');
set(h_dn_y_str,'string','y_Spacing','visible','off');
set(h_theta_m_str,'visible','on');
set(h_phi_m_str,'visible','off');
set(h_R0_str,'visible','off');
set(h_a_str(1),'visible','off');
set(h_a_str(2),'visible','off');
set(h_a_str(3),'visible','off');
set(h_a_str(4),'visible','off');
set(h_a_str(5),'visible','off');
set(h_a_str(6),'visible','off');
set(h_a_str(7),'visible','off');
set(h_a_str(8),'visible','off');
set(h_a_str(9),'visible','off');
set(h_a_str(10),'visible','off');
if dim==1
switch type
case 2 % Non-Linear Array
set(h_config,'enable','off');
set(h_no_elem_ok,'visible','on');
h_n=findobj(gcbf,'tag','no_elem');
n=str2num(get(h_n,'string'));
try
f1=mod(n,2); % flag to the number of inputs
if f1==0 % n is even
m=n/2;
for i=1:m
set(h_a_str(i),'visible','on');
set(h_a(i),'visible','on');
end
elseif f1==1 % n is odd
m=(n-1)/2;
for i=1:m+1
set(h_a_str(i),'visible','on');
set(h_a(i),'visible','on');
end
end
catch
if n>20
errordlg('Number of inputs is limited to 20');
end
end
case 4
set(h_R0_dB,'visible','on','string','20');
set(h_R0_str,'visible','on');
end
else
switch type
case 1
set(h_config,'enable','off');
set(h_n,'visible','off');
set(h_dn,'visible','off');
set(h_theta_m,'enable','on');
set(h_phi_m,'visible','on');
set(h_n_x,'visible','on');
set(h_dn_x,'visible','on');
set(h_n_y,'visible','on');
set(h_dn_y,'visible','on');
set(h_n_x_str,'string','No of x_Elements');
set(h_dn_x_str,'string','x_Spacing');
set(h_R0_str,'string','No of y_Elements','visible','on');
set(h_dn_y_str,'string','y_Spacing','visible','on');
set(h_phi_m_str,'visible','on');
end
end
%--------------------------------------------------------------------------------------------
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%--------------------------------------------------------------------------------------------
%------------------------------------------------------
function ctrl_config
% Array configuration control
%------------------------------------------------------
h_config=findobj(gcbf,'tag','config_list');
config=get(h_config,'value');
h_theta_m=findobj(gcbf,'tag','theta_m');
theta_m=str2num(get(h_theta_m,'string')); % theta_m: angle of maximum radiation
switch config
case 1
set(h_theta_m,'string','90','enable','off');
case 2
set(h_theta_m,'string','0','enable','off');
case 3
set(h_theta_m,'string','180','enable','off');
case 4
set(h_theta_m,'string','0','enable','off');
case 5
set(h_theta_m,'string','180','enable','off');
case 6
set(h_theta_m,'enable','on');
end
%--------------------------------------------------------------------------------------------
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
% End of Array Control Functions
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%--------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -