Field Patterns of a
Linear Dipole Antenna Array

Description

This Notebook shows how Mathematica  can be used in the analysis of engineering problems.  We examine the specific example of a linear array of dipole antennas.

John M. Novak
Wolfram Research, Inc.

Basics

In this analysis, we are only interested in the field or radiation pattern of antenna arrays, which is solely determined by the phases of the array elements.  The phase of the field of a single dipole element is determined by the exponential term.  This can be expressed as

Exp[-I (2 Pi f r)/c]

where  f is the frequency of the transmission, r is the distance from the element, and c is the speed of light.

We can analyze the array by superposing the individual elements.  This leads us to the following description of the field pattern, assuming elems is the number of elements:

(1/elems) Sum[Exp[-I (2 Pi f r[n])/c + phase[n]], {n,1,elems}]

This assumes that all the elements are transmitting at the same frequency.  Note that r[n] is the distance from the nth element and phase[n] is a phase shift. We can further refine this by assuming the elements are evenly spaced, by a distance d, along the x axis (a linear array), and we determine the distance from each element in terms of the distance from the first element (centered at 0,0) and the angle from the x axis.  From this, we can make a Mathematica function that, given the various parameters, returns the field pattern at a point.  Let's call our function AF, for array factor.

AF[r_, phi_, f_, d_, shift_, 
        elems_] := (((∑_(n = 1)^elems) (E^(-I (((2 π f (r - (Sqrt[(r^2) + ((((n - 1) d))^2) - 2 r ((n - 1) d) Cos[phi]])))/c) + (n - 1) shift))))/elems)

We also need to set a value for c.  We will assume all measurements are in meters and radians:

c = 3.  (10^8);

Far-Field Approximation

It is customary to examine the far-field case by allowing r to go to a large value.  We note that it might be useful to look at an approximation to the distance of each element in this case.

Series[
      r - (Sqrt[(r^2) + ((((n - 1) d))^2) - 2 r ((n - 1) d) Cos[phi]]), {r, ∞, 1}]

From this, we can create a simpler function, depending on phi, that gives the far-field expression:

FarAF[phi_, f_, d_, shift_, 
        elems_] := (((∑_(n = 1)^elems) (E^(-I (((2 π f (n - 1) d Cos[phi])/c) + (n - 1) shift))))/elems)

Examples

Plots can be generated from these functions.  For instance, we might  wish to examine the conventional far-field representation.  To do this, let us first load a package that defines polar plots:

Needs["Graphics`Graphics`"]

Standard Far-Field Pattern

Let us examine the far field for a linear array of six elements transmitting at 3 MHz, with the antennas spaced a half wavelength apart, with a progressive phase shift of 105 degrees between each element.  (The PlotRange option is to make sure that no outlying part of the graph gets cut off, as we are interested in all parts of this graph, not only the densest.)

PolarPlot[
      Abs[FarAF[phi, 3 (10^6), 50, 105 °, 
          6]], {phi, -π, π}, PlotRange -> All]

Far Field with Coupling to the Earth

We can also observe the shape of this pattern given the effects of coupling to the Earth.  As a simple approximation, sufficient for far-field analysis, the Earth causes the field to drop off as the sine of the angle above the horizon.

This plot looks much nicer without a mesh.  Because it is a Graphics3D resulting from a three- dimensional parametric plot, some manipulations have to be performed on the resulting graphics object to get this to come out correctly, as follows:

<< "Graphics`ParametricPlot3D`"

SphericalPlot3D[
      Sin[phi] Abs[FarAF[theta, 3 (10^6), 105, 50, 6]], {phi, 
        0, π}, {theta, -π, π}, PlotPoints -> 50, 
      PlotRange -> {{- .8,  .3}, {- .9,  .9}, {- .5,  .5}}, 
      Axes -> False, Boxed -> False, 
      DisplayFunction -> Identity];

Show[MapAt[Prepend[#1, EdgeForm[]] &, %, {1}], 
      DisplayFunction -> $DisplayFunction]

Onset of Far Field

It is also interesting to examine the more general expression for the field pattern, dependent on distance.  Although it is not strictly accurate, as it ignores secondary terms such as coupling between the antennas, it gives us a view of the onset of the far-field terms.

To do this, we need to convert from Cartesian to polar coordinates.  It is useful to define a function that determines the arctangent of one number over another properly (the built-in function ArcTan only accepts a single argument, so it will not necessarily give the required answer for each quadrant).

arctan[x_, y_] := 
      Which[x == 0 && y ≥ 0, (π/2), 
        x == 0 && y < 0, -(π/2), x < 0 && y ≥ 0, 
        ArcTan[(y/x)] + π, x < 0 && y < 0, ArcTan[(y/x)] - π, True, 
        ArcTan[(y/x)]]

A plot can now be generated from this.  Note especially the onset of the far field at approximately 200m from the center of the plot.

ContourPlot[
      Abs[AF[(Sqrt[(x^2) + (y^2)]), arctan[y, x], 3 (10^6), 50, 105, 
          6]], {x, -500, 500}, {y, -500, 500}, PlotPoints -> 50, 
      ColorFunction -> (Hue[#1  .6] &), 
      AspectRatio -> Automatic]