Main Content

phased.ArrayResponse

Sensor array response

Description

The phased.ArrayResponse System object™ calculates the complex-valued response of a sensor array.

To compute the response of the array for specified directions:

  1. Create the phased.ArrayResponse object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

arrayResponse = phased.ArrayResponse creates an array response System object, arrayResponse. This object calculates the response of a sensor array for the specified directions.

arrayResponse = phased.ArrayResponse(Name=Value) sets properties using one or more optional name-value arguments. For example, WeightsInputPort=true sets the input port control for specifying weights to true.

example

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Sensor array, specified as an array object from the phased package. The array contains subarrays. By default, the object uses a 2-element uniform linear array (ULA).

Signal propagation speed, specified as a positive scalar. The units are in meters per second.

Data Types: double

Input port control for specifying weights, specified as true (logical 1) or false (logical 0). To specify the weights, set this property to true. When you do not want to specify weights, set this property to false.

Data Types: logical

Polarization simulation activation, specified as true (logical 1) or false (logical 0).

Dependencies

This property applies only when the array specified in the SensorArray property is capable of simulating polarization.

Data Types: logical

Usage

Description

resp = arrayResponse(freq,ang) returns the array response resp at operating frequencies specified in freq and directions specified in ang.

example

resp = arrayResponse(freq,ang,weights) applies weights, weights, to the sensor array. This syntax is available when you set the WeightsInputPort property to true.

resp = arrayResponse(freq,ang,steerAngle) specifies the subarray steering angle steerAngle. This syntax is available when arrayResponse.Sensor is an array that contains subarrays, and the arrayResponse.Sensor.SubarraySteering value is either "Phase" or "Time".

resp = arrayResponse(freq,ang,weights,steerAngle) combines all input arguments. This syntax is available when the arrayResponse.WeightsInputPort value is true, arrayResponse.Sensor is an array that contains subarrays, and the arrayResponse.Sensor.SubarraySteering value is either "Phase" or "Time".

resp = arrayResponse(freq,ang,elementWeights) applies weights to each element within each subarray. To use this syntax, set the SensorArray property to an array that supports subarrays and set the SubarraySteering property of the array to "Custom".

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

expand all

Operating frequencies of the array, specified as a row vector of length L. The units are in hertz. Typical values are within the range specified by a property of the sensor element. Depending on the type of array, the element can be one of these options.

  • arrayGain.SensorArray.Element

  • arrayGain.SensorArray.Array.Element

  • arrayGain.SensorArray.Subarray.Element

The name of frequency range property is FrequencyRange or FrequencyVector based on the type of element in the array. The element has zero response at frequencies outside that range.

Data Types: double

Direction, specified as one of these options.

  • 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.

  • Row vector of length M — Each element specifies a direction’s azimuth angle. In this case, the phased.ArrayGain System object assumes the corresponding elevation angle to be 0.

Data Types: double

Weights applied to the sensor array, specified as one of these options.

  • N-by-L matrix — Each column of the matrix represents the weights at the corresponding frequency in freq. N is the number of subarrays if SensorArray contains subarrays, or the number of elements otherwise. L is the number of frequencies specified in freq.

  • N-element column vector — The weights apply at all frequencies in freq.

Data Types: double

Subarray steering angle, specified as one of these options. The units are in degrees.

  • Two-element column vector — steerAngle has the form [azimuth; elevation]. The azimuth angle must be between –180 and 180 degrees, and the elevation angle must be between –90 and 90 degrees.

  • Scalar — steerAngle represents the azimuth angle. In this case, the phased.ArrayResponse System object assumes the elevation angle to be 0.

Data Types: double

Subarray element weights, specified as a complex-valued NSE-by-N matrix or a 1-by-N cell array. N is the number of subarrays. The phased.ArrayResponse System object applies these weights to the individual elements within a subarray. This table outlines the dimensions and sizes of subarrays for phased.ReplicatedSubarray and phased.PartitionedArray.

Subarray Element Weights

Sensor ArraySubarray Weights
phased.ReplicatedSubarray

All subarrays have the same dimensions and sizes. Then, the subarray weights form an NSE-by-N matrix. NSE is the number of elements in each subarray and N is the number of subarrays. Each column of elementWeights specifies the weights for the corresponding subarray.

phased.PartitionedArray

Subarrays may not have the same dimensions and sizes. In this case, you can specify subarray weights as

  • an NSE-by-N matrix, where NSE is now the number of elements in the largest subarray. The first Q entries in each column are the element weights for the subarray, where Q is the number of elements in the subarray.

  • a 1-by-N cell array. Each cell contains a column vector of weights for the corresponding subarray. The column vectors have lengths equal to the number of elements in the corresponding subarray.

Dependencies

To enable this argument, set the SensorArray property to an array that contains subarrays and set the SubarraySteering property of the array to "Custom".

Complex Number Support: Yes

Output Arguments

expand all

Voltage response of the sensor array, returned as one of these options. The response depends on whether you set the EnablePolarization property value to true or false.

  • If you set the EnablePolarization property value to false, the voltage response, resp, has the dimensions M-by-L. M represents the number of angles specified in the input argument ang while L represents the number of frequencies specified in freq.

  • If you set the EnablePolarization property value to true, the voltage response, resp, is a MATLAB® struct containing two fields, resp.H and resp.V. The resp.H field represents the array’s horizontal polarization response, while resp.V represents the array’s vertical polarization response. Each field has the dimensions M-by-L. M represents the number of angles specified in the input argument, ang, while L represents the number of frequencies specified in freq.

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

Calculate array response for a 4-element uniform linear array (ULA) in the direction of 30 degrees azimuth and 20 degrees elevation. Assume the array's operating frequency is 300 MHz.

Construct ULA and ArrayResponse System objects

Set the array operating frequency to 300 MHz.

fc = 300e6;

Get the speed of light in meters per second

c = physconst("LightSpeed");

Create a ULA with 4 elements

array = phased.ULA(4);

Create an array response object for the specified sensor array.

response = phased.ArrayResponse(SensorArray=array);
resp = response(fc,[30;20])
resp = 
0.2768

Plot the array response in dB

Plot the normalized power in db as an azimuth cut at 0 degrees elevation.

pattern(array,fc,-180:180,0,PropagationSpeed=c,CoordinateSystem="rectangular",Type="powerdb")

Figure contains an axes object. The axes object with title Azimuth Cut (elevation angle = 0.0°), xlabel Azimuth Angle (degrees), ylabel Normalized Power (dB) contains an object of type line. This object represents 300 MHz.

References

[1] Van Trees, H. Optimum Array Processing. New York: Wiley-Interscience, 2002.

Extended Capabilities

expand all

Version History

Introduced in R2011a