Main Content

polarpattern class

Interactive plot of radiation patterns in polar format


polarpattern class plots antenna or array radiation patterns in interactive polar format. You can also plot other types of polar data. Use these plots when interactive data visualization or measurement is required. Right-click the Polar Measurement window to change the properties, zoom in, or add more data to the plot.


polarpattern plots antenna or array radiation patterns and other types of data in polar format. polarpattern plots field value data of radiation patterns for visualization and measurement. Right-click the polar plot to interact.


polarpattern(data) creates a polar plot with magnitude values in the vector d. In this polar plot, angles are uniformly spaced on the unit circle, starting at 0 degrees.


polarpattern(angle,magnitude) creates a polar plot from a set of angle vectors and corresponding magnitudes. You can also create polar plots from multiple sets for angle vectors and corresponding sets of magnitude using the syntax: polarpattern(angle1, magnitude1, angle2, magnitude2...).

p = polarpattern(___) returns an object handle that you can use to customize the plot or add measurements. You can specify any of the arguments from the previous syntaxes.

p = polarpattern('gco') returns an object handle from polar pattern in the current figure.


polarpattern(___,Name,Value) creates a polar plot, with additional properties specified by one or more name-value pair arguments. Name is the property name and Value is the corresponding property value. You can specify several name-value pair arguments in any order as Name1, Value1, ..., NameN, ValueN. Properties not specified retain their default values. To list all the property Name,Value pairs, use details(p). To list all the property Name,Value pairs, use details(p). You can use the properties to extract any data from the radiation pattern from the polar plot. For example, p = polarpattern(data,'Peaks',3) identifies and displays the three highest peaks in the pattern data.

For a list of properties, see PolarPattern Properties.

polarpattern(ax,___) creates a polar plot using axes handle, ax instead of the current axes handle.

Input Arguments

expand all

Antenna or array data, specified as one of the following:

  • A real length-M vector, where M contains the magnitude values with angles assumed to be (0:M1)M×360 degrees.

  • A real M-by-N matrix, where M contains the magnitude values and N contains the independent data sets. Each column in the matrix has angles taken from the vector (0:M1)M×360 degrees.

  • A real N-D array, where N is the number of dimensions. Arrays with dimensions 2 and greater are independent data sets.

  • A complex vector or matrix, where data contains Cartesian coordinates (x, y) of each point. x contains the real (data) and y contains the imaginary (data).

When data is in a logarithmic form, such as dB, magnitude values can be negative. In this case,polarpattern plots the smallest magnitude values at the origin of the polar plot and largest magnitude values at the maximum radius.

Set of angles, specified as a vector in degrees.

Set of magnitude values, specified as a vector or a matrix. For a matrix of magnitude values, each column is an independent set of magnitude values and corresponds to the same set of angles.


addAdd data to existing polar plot
addCursorAdd cursor to polar plot angle
animateReplace existing data with new data for animation
createLabelsCreate legend labels
findLobesMain, back and side lobe data
replaceReplace existing data with new data in polar plot
showPeaksTableShow or hide peak marker table
showSpanShow or hide angle span between two markers


collapse all

Create a default Vivaldi antenna and calculate the directivity at 1.5 GHz.

v = vivaldi;
V = pattern(v,1.5e9,0,0:1:360);

Plot the polar pattern of the calculated directivity.

P = polarpattern(V);

Create a default cavity antenna. Calculate the directivity of the antenna and write the data to cavity.pln using the msiwrite function.

c = cavity;
msiwrite(c,2.8e9,'cavity','Name','Cavity Antenna Specifications');

Read the cavity specification file into Horizontal, Vertical, and Optional structures using the msiread function.

[Horizontal,Vertical,Optional] = msiread('cavity.pln')
Horizontal = struct with fields:
    PhysicalQuantity: 'Gain'
           Magnitude: [360x1 double]
               Units: 'dBi'
             Azimuth: [360x1 double]
           Elevation: 0
           Frequency: 2.8000e+09
               Slice: 'Elevation'

Vertical = struct with fields:
    PhysicalQuantity: 'Gain'
           Magnitude: [360x1 double]
               Units: 'dBi'
             Azimuth: 0
           Elevation: [360x1 double]
           Frequency: 2.8000e+09
               Slice: 'Azimuth'

Optional = struct with fields:
         name: 'Cavity Antenna Specifications'
    frequency: 2.8000e+09
         gain: [1x1 struct]

Plot the polar pattern of the cavity at azimuth angles.

P = polarpattern(Horizontal.Azimuth,Horizontal.Magnitude);

Create a default monopole antenna and calculate the directivity at 75 MHz.

m = monopole;
M = pattern(m,75e6,0,0:1:360);

Plot the polar pattern of the antenna.

P = polarpattern(M,'TitleTop','Polar Pattern of Monopole');

Create a default dipole antenna and calculate the directivity at 75 MHz.

d = dipole;
D = pattern(d,75e6,0,0:1:360);

Plot the polar pattern of the antenna and display the properties of the plot.

P = polarpattern(D);

  internal.polari handle with properties:

                      Interactive: 1
                     LegendLabels: ''
                   AntennaMetrics: 0
                        CleanData: 1
                        AngleData: [361x1 double]
                    MagnitudeData: [361x1 double]
                    IntensityData: []
                     AngleMarkers: [0x1 struct]
                    CursorMarkers: [0x1 struct]
                      PeakMarkers: [0x1 struct]
                    ActiveDataset: 1
                  AngleLimVisible: 0
                    LegendVisible: 0
                             Span: 0
                         TitleTop: ''
                      TitleBottom: ''
                            Peaks: []
                         FontSize: 10
                     MagnitudeLim: [-50 10]
               MagnitudeAxisAngle: 75
                    MagnitudeTick: [-40 -20 0]
          MagnitudeTickLabelColor: 'k'
                         AngleLim: [0 360]
                   AngleTickLabel: {1x24 cell}
              AngleTickLabelColor: 'k'
       TitleTopFontSizeMultiplier: 1.1000
    TitleBottomFontSizeMultiplier: 0.9000
               TitleTopFontWeight: 'bold'
            TitleBottomFontWeight: 'normal'
          TitleTopTextInterpreter: 'none'
       TitleBottomTextInterpreter: 'none'
                   TitleTopOffset: 0.1500
                TitleBottomOffset: 0.1500
                         ToolTips: 1
               MagnitudeLimBounds: [-Inf Inf]
      MagnitudeFontSizeMultiplier: 0.9000
          AngleFontSizeMultiplier: 1
                       AngleAtTop: 90
                   AngleDirection: 'ccw'
                  AngleResolution: 15
           AngleTickLabelRotation: 0
             AngleTickLabelFormat: '360'
          AngleTickLabelColorMode: 'contrast'
                     PeaksOptions: {}
            AngleTickLabelVisible: 1
                            Style: 'line'
                        DataUnits: 'dB'
                     DisplayUnits: 'dB'
                    NormalizeData: 0
                 ConnectEndpoints: 0
              DisconnectAngleGaps: 0
                        EdgeColor: 'k'
                        LineStyle: '-'
                        LineWidth: 1
                         FontName: 'Helvetica'
                     FontSizeMode: 'auto'
              GridForegroundColor: [0.8000 0.8000 0.8000]
              GridBackgroundColor: 'w'
                 DrawGridToOrigin: 0
                     GridOverData: 0
               GridAutoRefinement: 0
                        GridWidth: 0.5000
                      GridVisible: 1
                         ClipData: 1
                  TemporaryCursor: 1
                 MagnitudeLimMode: 'auto'
           MagnitudeAxisAngleMode: 'auto'
                MagnitudeTickMode: 'auto'
      MagnitudeTickLabelColorMode: 'contrast'
        MagnitudeTickLabelVisible: 1
                   MagnitudeUnits: ''
                   IntensityUnits: ''
                           Marker: 'none'
                       MarkerSize: 6
                           Parent: [1x1 Figure]
                         NextPlot: 'replace'
                       ColorOrder: [7x3 double]
                  ColorOrderIndex: 1
                     SectorsColor: [16x3 double]
                     SectorsAlpha: 0.5000
                             View: 'full'
                    ZeroAngleLine: 0

Use Clean Data in Antenna Metrics to remove -inf and NaN values in a monopole antenna polar pattern. It is recommended to use Clean Data for partial data with -inf and NaN values.

m = monopole; 
m.GroundPlaneLength = inf;

Plot the beamwidth of the antenna at 70 MHz.


Figure contains an object of type uicontrol.

Plot the radiation pattern of the antenna at 70 MHz.


Use polarpattern to view antenna metrics of the radiation pattern.

P = polarpattern('gco');
P.CleanData = 1;
P.AntennaMetrics = 1;

Figure contains objects of type uicontrol.

Compare the beamwidth plot and the polarpattern plot. You will see that Antenna Metrics does not represent the beamwidth correctly.

You can also Clean Data by right clicking on the plot and selecting Clean Data.

After using Clean Data, you see that the polarpattern beamwidth calculation matches the beamwidth plot calculation.

Version History

Introduced in R2016a