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

📄 array_core.m

📁 matlab开发的阵列天线设计工具
💻 M
📖 第 1 页 / 共 2 页
字号:
    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 + -