Signal Radiation

Support for Modeling Signal Radiation

You can use the phased.Radiator and phased.Collector objects to model narrowband signal radiation and collection with an array. The array can be a single microphone or antenna element, or an array of sensor elements.

To radiate a signal from a sensor array, use phased.Radiator. When you use this object, you must specify these aspects of the radiator:

  • Whether the output of all sensor elements is combined

  • Operating frequency of the array

  • Propagation speed of the wave

  • Sensor (single element) or sensor array

  • Whether or not to apply weights to signals radiated by different elements in the array. You apply weights, when you execute the System object™.

Radiate Signal with Uniform Linear Array

Construct a radiator using a two-element ULA with elements spaced 0.5 meters apart (the default ULA). The operating frequency is 300 MHz, the propagation speed is the speed of light, and the element outputs are combined to simulate the far field radiation pattern.

Note: This example runs only in R2016b or later. If you are using an earlier release, replace each call to the function with the equivalent step syntax. For example, replace myObject(x) with step(myObject,x).

array = phased.ULA('NumElements',2,'ElementSpacing',0.5);
radiator = phased.Radiator('Sensor',array,...
    'OperatingFrequency',300e6,...
    'PropagationSpeed',physconst('LightSpeed'),...
    'CombineRadiatedSignals',true);

Create a signal to radiate and propagate to the far field at an angle of (45°,0°) .

x = [1 -1 1 -1]';
y = radiator(x,[45;0]);

The far field signal results from multiplying the signal by the array pattern. The array pattern is the product of the array element pattern and the array factor. For a uniform linear array, the array factor is the superposition of elements in the steering vector phased.SteeringVector.

The following code produces an identical far-field signal by explicitly using the array factor.

array = phased.ULA('NumElements',2,'ElementSpacing',0.5);
steervec = phased.SteeringVector('SensorArray',array,...
    'IncludeElementResponse',true);
sv = steervec(300e6,[45;0]);
y1 = x*sum(sv);

Compare y1 to y.

disp(y1-y)
     0
     0
     0
     0