Main Content

Custom Antenna Element

Support for Custom Antenna Elements

The phased.CustomAntennaElement object enables you to model a custom antenna element. When you use phased.CustomAntennaElement, you must specify these aspects of the antenna:

  • Operating frequency vector for the antenna element

  • Frequency response of the element at the frequencies in the operating frequency vector

  • Azimuth angles and elevation angles where the custom response is evaluated

  • Magnitude radiation pattern. This pattern shows the spatial response of the antenna at the azimuth and elevation angles you specify.

    Tip

    You can import a radiation pattern that uses u/v coordinates or φ/θ angles, instead of azimuth/elevation angles. To use such a pattern with phased.CustomAntennaElement, first convert your pattern to azimuth/elevation form. Use uv2azelpat or phitheta2azelpat to do the conversion. For an example, see Antenna Array Analysis with Custom Radiation Pattern.

For your custom antenna element, the antenna response depends on the frequency response and radiation pattern. Specifically, the frequency and spatial responses are interpolated separately using nearest-neighbor interpolation and then multiplied together to produce the total response. To avoid interpolation errors, the range of azimuth angles should include +/– 180 degrees and the range of elevation angles should include +/– 90 degrees.

Antenna with Custom Radiation Pattern

Create a custom antenna element object. The radiation pattern has a cosine dependence on elevation angle but is independent of azimuth angle.

az = -180:90:180;
el = -90:45:90;
elresp = cosd(el);
magpattern = mag2db(repmat(elresp',1,numel(az)));
phasepattern = zeros(size(magpattern));
antenna = phased.CustomAntennaElement('AzimuthAngles',az,...
    'ElevationAngles',el,'MagnitudePattern',magpattern, ...
    'PhasePattern',phasepattern);

Display the radiation pattern.

disp(antenna.MagnitudePattern)
      -Inf      -Inf      -Inf      -Inf      -Inf
   -3.0103   -3.0103   -3.0103   -3.0103   -3.0103
         0         0         0         0         0
   -3.0103   -3.0103   -3.0103   -3.0103   -3.0103
      -Inf      -Inf      -Inf      -Inf      -Inf

Calculate the antenna response at the azimuth-elevation pairs (-30,0) and (-45,0) at 500 MHz.

ang = [-30 0; -45 0];
resp = antenna(500.0e6,ang);
disp(resp)
    0.7071
    1.0000

The following code illustrates how nearest-neighbor interpolation is used to find the antenna voltage response in the two directions. The total response is the product of the angular response and the frequency response.

g = interp2(deg2rad(antenna.AzimuthAngles),...
    deg2rad(antenna.ElevationAngles),...
    db2mag(antenna.MagnitudePattern),...
    deg2rad(ang(1,:))', deg2rad(ang(2,:))','nearest',0);
h = interp1(antenna.FrequencyVector,...
    db2mag(antenna.FrequencyResponse),500e6,'nearest',0);
antresp = h.*g;

Compare the value of antresp to the response of the antenna.

disp(mag2db(antresp))
   -3.0103
         0