phased.TwoRayChannel

Two-ray propagation channel

Description

The phased.TwoRayChannel models a narrowband two-ray propagation channel. A two-ray propagation channel is the simplest type of multipath channel. You can use a two-ray channel to simulate propagation of signals in a homogeneous, isotropic medium with a single reflecting boundary. This type of medium has two propagation paths: a line-of-sight (direct) propagation path from one point to another and a ray path reflected from the boundary. You can use this System object™ for short-range radar and mobile communications applications where the signals propagate along straight paths and the earth is assumed to be flat. You can also use this object for sonar and microphone applications. For acoustic applications, you can choose the fields to be non-polarized and adjust the propagation speed to be the speed of sound in air or water. You can use phased.TwoRayChannel to model propagation from several points simultaneously.

While the System object works for all frequencies, the attenuation models for atmospheric gases and rain are valid for electromagnetic signals in the frequency range 1–1000 GHz only. The attenuation model for fog and clouds is valid for 10–1000 GHz. Outside these frequency ranges, the System object uses the nearest valid value.

The phased.TwoRayChannel System object applies range-dependent time delays to the signals, and as well as gains or losses, phase shifts, and boundary reflection loss. The System object applies Doppler shift when either the source or destination is moving.

Signals at the channel output can be kept separate or be combined — controlled by the CombinedRaysOutput property. In the separate option, both fields arrive at the destination separately and are not combined. For the combined option, the two signals at the source propagate separately but are coherently summed at the destination into a single quantity. This option is convenient when the difference between the sensor or array gains in the directions of the two paths is not significant and need not be taken into account.

Unlike the phased.FreeSpace System object, the phased.TwoRayChannel System object does not support two-way propagation.

To compute the propagation delay for specified source and receiver points:

  1. Define and set up your two-ray channel using the Construction procedure that follows.

  2. Call the step method to compute the propagated signal using the properties of the phased.TwoRayChannel System object.

    The behavior of step is specific to each object in the toolbox.

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.

Construction

s2Ray = phased.TwoRayChannel creates a two-ray propagation channel System object, s2Ray.

s2Ray = phased.TwoRayChannel(Name,Value) creates a System object, s2Ray, with each specified property Name set to the specified Value. You can specify additional name and value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).

Properties

expand all

Signal propagation speed, specified as a positive scalar. Units are in meters per second. The default propagation speed is the value returned by physconst('LightSpeed'). See physconst for more information.

Example: 3e8

Data Types: double

Operating frequency, specified as a positive scalar. Units are in Hz.

Example: 1e9

Data Types: double

Option to enable the atmospheric attenuation model, specified as a false or true. Set this property to true to add signal attenuation caused by atmospheric gases, rain, fog, or clouds. Set this property to false to ignore atmospheric effects in propagation.

Setting SpecifyAtmosphere to true, enables the Temperature, DryAirPressure, WaterVapourDensity, LiquidWaterDensity, and RainRate properties.

Data Types: logical

Ambient temperature, specified as a real-valued scalar. Units are in degrees Celsius.

Example: 20.0

Dependencies

To enable this property, set SpecifyAtmosphere to true.

Data Types: double

Atmospheric dry air pressure, specified as a positive real-valued scalar. Units are in pascals (Pa). The default value of this property corresponds to one standard atmosphere.

Example: 101.0e3

Dependencies

To enable this property, set SpecifyAtmosphere to true.

Data Types: double

Atmospheric water vapor density, specified as a positive real-valued scalar. Units are in g/m3.

Example: 7.4

Dependencies

To enable this property, set SpecifyAtmosphere to true.

Data Types: double

Liquid water density of fog or clouds, specified as a nonnegative real-valued scalar. Units are in g/m3. Typical values for liquid water density are 0.05 for medium fog and 0.5 for thick fog.

Example: 0.1

Dependencies

To enable this property, set SpecifyAtmosphere to true.

Data Types: double

Rainfall rate, specified as a nonnegative scalar. Units are in mm/hr.

Example: 10.0

Dependencies

To enable this property, set SpecifyAtmosphere to true.

Data Types: double

Sample rate of signal, specified as a positive scalar. Units are in Hz. The System object uses this quantity to calculate the propagation delay in units of samples.

Example: 1e6

Data Types: double

Option to enable polarized fields, specified as false or true. Set this property to true to enable polarization. Set this property to false to ignore polarization.

Data Types: logical

Ground reflection coefficient for the field at the reflection point, specified as a complex-valued scalar or a complex-valued 1-by-N row vector. Each coefficient has an absolute value less than or equal to one. The quantity N is the number of two-ray channels. Units are dimensionless. Use this property to model nonpolarized signals. To model polarized signals, use the GroundRelativePermittivity property.

Example: -0.5

Dependencies

To enable this property, set EnablePolarization to false.

Data Types: double
Complex Number Support: Yes

Relative permittivity of the ground at the reflection point, specified as a positive real-valued scalar or a 1-by-N real-valued row vector of positive values. The dimension N is the number of two-ray channels. Permittivity units are dimensionless. Relative permittivity is defined as the ratio of actual ground permittivity to the permittivity of free space. This property applies when you set the EnablePolarization property to true. Use this property to model polarized signals. To model nonpolarized signals, use the GroundReflectionCoefficient property.

Example: 5

Dependencies

To enable this property, set EnablePolarization to true.

Data Types: double

Option to combine the two rays at channel output, specified as true or false. When this property is true, the object coherently adds the line-of-sight propagated signal and the reflected path signal when forming the output signal. Use this mode when you do not need to include the directional gain of an antenna or array in your simulation.

Data Types: logical

Source of maximum one-way propagation distance, specified as 'Auto' or 'Property'. The maximum one-way propagation distance is used to allocate sufficient memory for signal delay computation. When you set this property to 'Auto', the System object automatically allocates memory. When you set this property to 'Property', you specify the maximum one-way propagation distance using the value of the MaximumDistance property.

Data Types: char

Maximum one-way propagation distance, specified as a positive real-valued scalar. Units are in meters. Any signal that propagates more than the maximum one-way distance is ignored. The maximum distance must be greater than or equal to the largest position-to-position distance.

Example: 5000

Dependencies

To enable this property, set the MaximumDistanceSource property to 'Property'.

Data Types: double

The source of the maximum number of samples of the input signal, specified as 'Auto' or 'Property'. When you set this property to 'Auto', the propagation model automatically allocates enough memory to buffer the input signal. When you set this property to 'Property', you specify the maximum number of samples in the input signal using the MaximumNumInputSamples property. Any input signal longer than that value is truncated.

To use this object with variable-size signals in a MATLAB® Function Block in Simulink®, set the MaximumNumInputSamplesSource property to 'Property' and set a value for the MaximumNumInputSamples property.

Example: 'Property'

Dependencies

To enable this property, set MaximumDistanceSource to 'Property'.

Data Types: char

Maximum number of input signal samples, specified as a positive integer. The input signal is the first argument of the step method, after the System object itself. The size of the input signal is the number of rows in the input matrix. Any input signal longer than this number is truncated. To process signals completely, ensure that this property value is greater than any maximum input signal length.

The waveform-generating System objects determine the maximum signal size:

  • For any waveform, if the waveform OutputFormat property is set to 'Samples', the maximum signal length is the value specified in the NumSamples property.

  • For pulse waveforms, if the OutputFormat is set to 'Pulses', the signal length is the product of the smallest pulse repetition frequency, the number of pulses, and the sample rate.

  • For continuous waveforms, if the OutputFormat is set to 'Sweeps', the signal length is the product of the sweep time, the number of sweeps, and the sample rate.

Example: 2048

Dependencies

To enable this property, set MaximumNumInputSamplesSource to 'Property'.

Data Types: double

Methods

resetReset states of System object
stepPropagate signal from point to point using two-ray channel model
Common to All System Objects
release

Allow System object property value changes

Examples

collapse all

This example illustrates the two-ray propagation of a signal, showing how the signals from the line-of-sight and reflected path arrive at the receiver at different times.

Create and Plot Propagating Signal

Create a nonpolarized electromagnetic field consisting of two rectangular waveform pulses at a carrier frequency of 100 MHz. Assume the pulse width is 10 ms and the sampling rate is 1 MHz. The bandwidth of the pulse is 0.1 MHz. Assume a 50% duty cycle in so that the pulse width is one-half the pulse repetition interval. Create a two-pulse wave train. Set the GroundReflectionCoefficient to 0.9 to model strong ground reflectivity. Propagate the field from a stationary source to a stationary receiver. The vertical separation of the source and receiver is approximately 10 km.

c = physconst('LightSpeed');
fs = 1e6;
pw = 10e-6;
pri = 2*pw;
PRF = 1/pri;
fc = 100e6;
lambda = c/fc;
waveform = phased.RectangularWaveform('SampleRate',fs,'PulseWidth',pw,...
    'PRF',PRF,'OutputFormat','Pulses','NumPulses',2);
wav = waveform();
n = size(wav,1);
figure;
plot([0:(n-1)],real(wav),'b.-');
xlabel('Time (samples)')
ylabel('Waveform magnitude')

Specify the Location of Source and Receiver

Place the source and receiver about 1000 meters apart horizontally and approximately 10 km apart vertically.

pos1 = [1000;0;10000];
pos2 = [0;100;100];
vel1 = [0;0;0];
vel2 = [0;0;0];

Compute the predicted signal delays in units of samples.

[rng,ang] = rangeangle(pos2,pos1,'two-ray');
delay = rng/c*fs
delay = 1×2

   33.1926   33.8563

Create a Two-Ray Channel System Object™

Create a two-ray propagation channel System object™ and propagate the signal along both the line-of-sight and reflected ray paths.

channel = phased.TwoRayChannel('SampleRate',fs,...
    'GroundReflectionCoefficient',.9,'OperatingFrequency',fc,...
    'CombinedRaysOutput',false);
prop_signal = channel([wav,wav],pos1,pos2,vel1,vel2);

Plot the Propagated Signals

  • Plot the signal propagated along the line-of-sight.

  • Then, overlay a plot of the signal propagated along the reflected path.

  • Finally, overlay a plot of the coherent sum of the two signals.

n = size(prop_signal,1);
delay = [0:(n-1)];
plot(delay,abs([prop_signal(:,1)]),'g')
hold on
plot(delay,abs([prop_signal(:,2)]),'r')
plot(delay,abs([prop_signal(:,1) + prop_signal(:,2)]),'b')
hold off
legend('Line-of-sight','Reflected','Combined','Location','NorthWest')
xlabel('Delay (samples)')
ylabel('Signal Magnitude')

The plot shows that the delay of the reflected path signal agrees with the predicted delay. The magnitude of the coherently combined signal is less than either of the propagated signals indicating that there is some interference between the two signals.

Create a polarized electromagnetic field consisting of linear FM waveform pulses. Propagate the field from a stationary source with a crossed-dipole antenna element to a stationary receiver approximately 10 km away. The transmitting antenna is 100 meters above the ground. The receiving antenna is 150 m above the ground. The receiving antenna is also a crossed-dipole. Plot the received signal.

Set Radar Waveform Parameters

Assume the pulse width is 10μs and the sampling rate is 10 MHz. The bandwidth of the pulse is 1 MHz. Assume a 50% duty cycle in which the pulse width is one-half the pulse repetition interval. Create a two-pulse wave train. Assume a carrier frequency of 100 MHz.

c = physconst('LightSpeed');
fs = 10e6;
pw = 10e-6;
pri = 2*pw;
PRF = 1/pri;
fc = 100e6;
bw = 1e6;
lambda = c/fc;

Set Up Required System Objects

Use a GroundRelativePermittivity of 10.

waveform = phased.LinearFMWaveform('SampleRate',fs,'PulseWidth',pw,...
    'PRF',PRF,'OutputFormat','Pulses','NumPulses',2,'SweepBandwidth',bw,...
    'SweepDirection','Up','Envelope','Rectangular','SweepInterval',...
    'Positive');
antenna = phased.CrossedDipoleAntennaElement(...
    'FrequencyRange',[50,200]*1e6);
radiator = phased.Radiator('Sensor',antenna,'OperatingFrequency',fc,...
    'Polarization','Combined');
channel = phased.TwoRayChannel('SampleRate',fs,...
    'OperatingFrequency',fc,'CombinedRaysOutput',false,...
    'EnablePolarization',true,'GroundRelativePermittivity',10);
collector = phased.Collector('Sensor',antenna,'OperatingFrequency',fc,...
    'Polarization','Combined');

Set Up Scene Geometry

Specify transmitter and receiver positions, velocities, and orientations. Place the source and receiver about 1000 m apart horizontally and approximately 50 m apart vertically.

posTx = [0;100;100];
posRx = [1000;0;150];
velTx = [0;0;0];
velRx = [0;0;0];
laxRx = rotz(180);
laxTx = rotx(1)*eye(3);

Create and Radiate Signals from Transmitter

Compute the transmission angles for the two rays traveling toward the receiver. These angles are defined with respect to the transmitter local coordinate system. The phased.Radiator System object™ uses these angles to apply separate antenna gains to the two signals.

[rng,angsTx] = rangeangle(posRx,posTx,laxTx,'two-ray');
wav = waveform();

Plot the transmitted Waveform

n = size(wav,1);
plot([0:(n-1)]/fs*1000000,real(wav))
xlabel('Time ({\mu}sec)')
ylabel('Waveform')

sig = radiator(wav,angsTx,laxTx);

Propagate signals to receiver via two-ray channel

prop_sig = channel(sig,posTx,posRx,velTx,velRx);

Receive Propagated Signal

Compute the reception angles for the two rays arriving at the receiver. These angles are defined with respect to the receiver local coordinate system. The phased.Collector System object™ uses these angles to apply separate antenna gains to the two signals.

[~,angsRx] = rangeangle(posTx,posRx,laxRx,'two-ray');

Collect and combine received rays.

y = collector(prop_sig,angsRx,laxRx);

Plot received waveform

plot([0:(n-1)]/fs*1000000,real(y))
xlabel('Time ({\mu}sec)')
ylabel('Received Waveform')

More About

expand all

References

[1] Saakian, A. Radio Wave Propagation Fundamentals. Norwood, MA: Artech House, 2011.

[2] Balanis, C. Advanced Engineering Electromagnetics. New York: Wiley & Sons, 1989.

[3] Rappaport, T. Wireless Communications: Principles and Practice, 2nd Ed New York: Prentice Hall, 2002.

[4] Radiocommunication Sector of the International Telecommunication Union. Recommendation ITU-R P.676-10: Attenuation by atmospheric gases. 2013.

[5] Radiocommunication Sector of the International Telecommunication Union. Recommendation ITU-R P.840-6: Attenuation due to clouds and fog. 2013.

[6] Radiocommunication Sector of the International Telecommunication Union. Recommendation ITU-R P.838-3: Specific attenuation model for rain for use in prediction methods. 2005.

Extended Capabilities

Introduced in R2015b