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

传真(Fax)编程

开发平台:

Matlab

  1. % this routine calculates the scattered electric field of an arbitrary
  2. % N-sided polygon located in the x-y plane.
  3. clear all
  4. frequency = 1.0e9;                  % desired radar frequency
  5. c = 299795645.0;                    % speed of light
  6. w = 2.0*pi*frequency;               % radian frequency
  7. wavenumber = w/c;                   % free space wavenumber
  8. mu = 4.0*pi*1.0e-7;                 % free space permeability
  9. z_o = 376.7343;                     % free space wave impedance
  10. nsides = 3;                         % number of polygon sides
  11. vertices(1,:) = [0.0 0.0 0.0];      % vertexes of polygon (counterclockwise)
  12. vertices(2,:) = [1.0 0.5 0.0];      % vertexes of polygon (counterclockwise)
  13. vertices(3,:) = [1.5 0.0 0.0];      % vertexes of polygon (counterclockwise)
  14. for n = 1:nsides
  15.     if n == nsides
  16.         alpha_n(nsides,1) = vertices(1,1) - vertices(nsides,1);
  17.         alpha_n(nsides,2) = vertices(1,2) - vertices(nsides,2);
  18.         alpha_n(nsides,3) = vertices(1,3) - vertices(nsides,3);
  19.     else 
  20.         alpha_n(n,1) = vertices(n+1,1) - vertices(n,1);
  21.         alpha_n(n,2) = vertices(n+1,2) - vertices(n,2);
  22.         alpha_n(n,3) = vertices(n+1,3) - vertices(n,3);
  23.     end
  24.     alpha_n(n, 1:3) = alpha_n(n, 1:3)/norm(alpha_n(n, 1:3));
  25. end
  26.  
  27. normal_vect = [0 0 1];              % +z normal for x-y plane
  28. theta_points = 180;                 % number of points in theta
  29. phi_points = 1;                     % number of points in phi
  30. theta = linspace(-0.5*pi, 0.5*pi, theta_points);
  31. phi = linspace(0.0, 2.0*pi, phi_points);
  32. for i_theta = 1:theta_points
  33.       
  34.     for i_phi = 1:phi_points
  35.         
  36.         theta_vect(1) = cos(theta(i_theta))*cos(phi(i_phi));
  37.         theta_vect(2) = cos(theta(i_theta))*sin(phi(i_phi));
  38.         theta_vect(3) = -sin(theta(i_theta));
  39.         
  40.         phi_vect(1) = -sin(phi(i_phi));
  41.         phi_vect(2) = cos(phi(i_phi));
  42.         phi_vect(3) = 0.0;
  43.         
  44.         w_vect(1) = 2*wavenumber*sin(theta(i_theta))*cos(phi(i_phi));
  45.         w_vect(2) = 2*wavenumber*sin(theta(i_theta))*sin(phi(i_phi));
  46.         w_vect(3) = 0.0;
  47.             
  48.         s_term = 0.0;
  49.         
  50.         for n = 1:nsides
  51.             expterm = exp(i*dot(w_vect, vertices(n,1:3)));
  52.             if n == 1
  53.                 num = dot(cross(normal_vect, alpha_n(n,1:3)), alpha_n(nsides,1:3));
  54.                 denom = dot(w_vect, alpha_n(n,1:3))*dot(w_vect, alpha_n(nsides,1:3));
  55.             else
  56.                 num = dot(cross(normal_vect, alpha_n(n,1:3)), alpha_n(n-1,1:3));
  57.                 denom = dot(w_vect, alpha_n(n,1:3))*dot(w_vect, alpha_n(n-1,1:3));
  58.             end
  59.             s_term = s_term + num*expterm/denom;
  60.         end
  61.         
  62.         vect_term = dot(theta_vect, cross(phi_vect, normal_vect));
  63.         
  64.         es(i_theta, i_phi) = -j*w*mu/2.0/pi/z_o*vect_term*s_term;
  65.        
  66.     end
  67. end
  68. rcs = 20.0*log10(sqrt(4*pi)*abs(es));
  69. plot(180*theta/pi, rcs)
  70. axis([-90 90 -120 20])
  71. xlabel('Theta (degrees)')
  72. ylabel('RCS (dBsm')
  73. grid on
  74. title('Frequency = 1 GHz')