Main Content

step

System object: phased.CustomAntennaElement
Namespace: phased

Output response of antenna element

Syntax

RESP = step(H,FREQ,ANG)

Description

Note

Starting in R2016b, instead of using the step method to perform the operation defined by the System object™, you can call the object with arguments, as if it were a function. For example, y = step(obj,x) and y = obj(x) perform equivalent operations.

RESP = step(H,FREQ,ANG) returns the antenna’s voltage response RESP at operating frequencies specified in FREQ and directions specified in ANG. The form of RESP depends upon whether the antenna element supports polarization as determined by the SpecifyPolarizationPattern property. If SpecifyPolarizationPattern is set to false, RESP is an M-by-L matrix containing the antenna response at the M angles specified in ANG and at the L frequencies specified in FREQ. If SpecifyPolarizationPattern is set to true, RESP is a MATLAB® struct containing two fields, RESP.H and RESP.V, representing the antenna's response in horizontal and vertical polarization, respectively. Each field is an M-by-L matrix containing the antenna response at the M angles specified in ANG and at the L frequencies specified in FREQ.

Note

The object performs an initialization the first time the object is executed. This initialization locks nontunable properties and input specifications, such as dimensions, complexity, and data type of the input data. If you change a nontunable property or an input specification, the System object issues an error. To change nontunable properties or inputs, you must first call the release method to unlock the object.

Input Arguments

H

Antenna element object.

FREQ

Operating frequencies of antenna in hertz. FREQ is a row vector of length L.

ANG

Directions in degrees. ANG can be either a 2-by-M matrix or a row vector of length M.

If ANG is a 2-by-M matrix, each column of the matrix specifies the direction in the form [azimuth; elevation]. The azimuth angle must be between –180 and 180 degrees, inclusive. The elevation angle must be between –90 and 90 degrees, inclusive.

If ANG is a row vector of length M, each element specifies a direction’s azimuth angle. In this case, the corresponding elevation angle is assumed to be 0.

Output Arguments

RESP

Voltage response of antenna element. The output depends on whether the antenna element supports polarization or not.

  • If the antenna element does not support polarization, RESP is an M-by-L matrix. In this matrix, M represents the number of angles specified in ANG while L represents the number of frequencies specified in FREQ.

  • If the antenna element supports polarization, RESP is a MATLAB struct with fields RESP.H and RESP.V containing responses for the horizontal and vertical polarization components of the antenna radiation pattern. RESP.H and RESP.V are M-by-L matrices. In these matrices, M represents the number of angles specified in ANG while L represents the number of frequencies specified in FREQ.

Examples

expand all

Construct a user-defined antenna with an omnidirectional response in azimuth and a cosine pattern in elevation. The antenna operates at 1 GHz. Plot the response pattern. Then, find the antenna response at 30°.

antenna = phased.CustomAntennaElement;
antenna.AzimuthAngles = -180:180;
antenna.ElevationAngles = -90:90;
antenna.MagnitudePattern = mag2db(repmat(cosd(antenna.ElevationAngles)',...
    1,numel(antenna.AzimuthAngles)));

Find the response at 30° elevation for an operating frequency of 1 GHz.

fc = 1.0e9;
resp = antenna(fc,[0;30])
resp = 0.8660

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

Algorithms

The total response of a custom antenna element is a combination of its frequency response and spatial response. phased.CustomAntennaElement calculates both responses using nearest neighbor interpolation, and then multiplies the responses to form the total response.