circular_array.m
上传用户:szahd2008
上传日期:2020-09-25
资源大小:1275k
文件大小:4k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1.  %Circular Array in the x-y plane 
  2. % Element is a short dipole antenna parallel to the z axis
  3. % 2D Radiation Patterns for fixed phi or fixed theta
  4. % dB polar plots uses the polardb.m file
  5. % Last modified: July 13, 2003
  6. %
  7. %%%% Element expression needs to be modified if different
  8. %%%% than a short dipole antenna along the z axis
  9. %
  10. clear all
  11. clf
  12. % close all
  13. %  ====   Input Parameters  ====
  14. a = 1.;         % radius of the circle
  15. N = 10;           % number of Elements of the circular array
  16. theta0 = 45;    % main beam Theta direction
  17. phi0 = 60;      % main beam Phi direction
  18. % Theta or Phi variations for the calculations of the far field pattern
  19. Variations = 'Phi';  % Correct selections are  'Theta' or 'Phi' 
  20. phid = 60;       % constant phi plane for theta variations
  21. thetad = 45;     % constant theta plane for phi variations
  22. %  ====   End of Input parameters section  ====
  23. dtr = pi/180;           % conversion factors
  24. rtd = 180/pi;
  25. phi0r = phi0*dtr;
  26. theta0r = theta0*dtr;
  27. lambda = 1;   
  28. k = 2*pi/lambda;
  29. ka = k*a;               % Wavenumber times the radius
  30. jka = j*ka;
  31. I(1:N) = 1;             % Elements excitation Amplitude and Phase
  32. alpha(1:N) =0;    
  33. for n = 1:N             % Element positions Uniformly distributed along the circle
  34.     phin(n) = 2*pi*n/N;
  35. end
  36. switch Variations
  37. case 'Theta'
  38.     phir = phid*dtr;    % Pattern in a constant Phi plane 
  39.     i = 0;
  40.     for theta = 0.001:1:181
  41.         i = i+1;
  42.         thetar(i) = theta*dtr;
  43.         angled(i) = theta;  angler(i) = thetar(i);
  44.         Arrayfactor(i) = 0;
  45.         for n = 1:N
  46.             Arrayfactor(i) = Arrayfactor(i) + I(n)*exp(j*alpha(n)) ...
  47.                            * exp( jka*(sin(thetar(i))*cos(phir -phin(n))) ...
  48.                                  -jka*(sin(theta0r  )*cos(phi0r-phin(n)))  );             
  49.         end
  50.         Arrayfactor(i) = abs(Arrayfactor(i));
  51.         Element(i) = abs(sin(thetar(i)+0*dtr));  % use the abs function to avoid 
  52.     end
  53. case 'Phi'
  54.     thetar = thetad*dtr;  % Pattern in a constant Theta plane 
  55.     i = 0;
  56.     for phi = 0.001:1:361
  57.         i = i+1;
  58.         phir(i)   = phi*dtr;
  59.         angled(i) = phi;  angler(i) = phir(i);
  60.         Arrayfactor(i) = 0;
  61.         for n = 1:N
  62.             Arrayfactor(i) = Arrayfactor(i) +  I(n)*exp(j*alpha(n)) ...
  63.                            * exp( jka*(sin(thetar )*cos(phir(i)-phin(n))) ...
  64.                                  -jka*(sin(theta0r)*cos(phi0r  -phin(n)))  );              
  65.         end
  66.         Arrayfactor(i) = abs(Arrayfactor(i));
  67.         Element(i) = abs(sin(thetar+0*dtr));  % use the abs function to avoid 
  68.     end   
  69. end
  70. angler = angled*dtr;
  71. Element = Element/max(Element);
  72. Array = Arrayfactor/max(Arrayfactor);
  73. ArraydB = 20*log10(Array);
  74. EtotalR =(Element.*Arrayfactor)/max(Element.*Arrayfactor);
  75. figure(1)
  76. plot(angled,Array)
  77. ylabel('Array pattern')
  78. grid
  79. switch Variations
  80. case 'Theta'
  81.   axis ([0 180 0 1 ])
  82. %  theta = theta +pi/2;
  83.    xlabel('Theta [Degrees]')
  84.    title ( 'phi = 90^o plane')
  85. case 'Phi'
  86. axis ([0 360 0 1 ])
  87.    xlabel('Phi [Degrees]')
  88.     title ( 'Theta = 90^o plane')
  89. end
  90. figure(2)
  91. plot(angled,ArraydB)
  92. %axis ([-1 1 -60 0])
  93. ylabel('Power pattern [dB]')
  94. grid;
  95. switch Variations
  96. case 'Theta'
  97.   axis ([0 180 -60 0 ])
  98.    xlabel('Theta [Degrees]')
  99.       title ( 'phi = 90^o plane')
  100. case 'Phi'
  101. axis ([0 360 -60 0 ])
  102.    xlabel('Phi [Degrees]')
  103.        title ( 'Theta = 90^o plane')
  104. end
  105. figure(3)
  106. polar(angler,Array)
  107. title ('Array pattern')
  108. figure(4)
  109. polardb(angler,Array)
  110. title ('Power pattern [dB]')
  111. % the plots provided above are for the array factor based on the circular 
  112. % array plots for other patterns such as those for the antenna element 
  113. % (Element)or the total pattern (Etotal based on Element*Arrayfactor) can 
  114. % also be displayed by the user as all these patterns are already computed 
  115. % above.
  116. figure(10)
  117. subplot(2,2,1)  
  118. polardb (angler,Element,'b-'); % rectangular plot of element pattern
  119. title('Element normalized E field [dB]')
  120. subplot(2,2,2)
  121. polardb(angler,Array,'b-')
  122. title(' Array Factor normalized [dB]')
  123. subplot(2,2,3)
  124. polardb(angler,EtotalR,'b-');  % polar plot
  125. title('Total normalized E field [dB]')