Main Content

phased.LOSChannel

Narrowband LOS propagation channel

Description

The phased.LOSChannel models the propagation of narrowband electromagnetic signals through a line-of-sight (LOS) channel from a source to a destination. In an LOS channel, propagation paths are straight lines from point to point. The propagation model in the LOS channel includes free-space attenuation in addition to attenuation due to atmospheric gases, rain, fog, and clouds. You can use phased.LOSChannel to model the propagation of signals between multiple 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.LOSChannel System object applies range-dependent time delays to the signals, as well as gains or losses. When either the source or destination is moving, the System object applies Doppler shifts.

Like the phased.FreeSpace System object, the phased.LOSChannel System object supports two-way propagation.

To create and use a narrowband channel:

  1. Create the phased.LOSChannel 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

channel = phased.LOSChannel creates an LOS attenuating propagation channel System object, channel.

channel = phased.LOSChannel(Name=Value) creates a System object, channel, 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).

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.

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

Enable two-way propagation, specified as a false or true. Set this property to true to perform round-trip propagation between the signal origin and the destination. Set this property to false to perform only one-way propagation from the origin to the destination.

Example: true

Data Types: logical

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

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 object call. 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

Usage

Description

prop_sig = channel(sig,origin_pos,dest_pos,origin_vel,dest_vel) returns the resulting signal, prop_sig, when a narrowband signal, sig, propagates through a line-of-sight (LOS) channel from a source located at the origin_pos position to a destination at the dest_pos position. Only one of the origin_pos or dest_pos arguments can specify multiple positions. The other must contain a single position. The velocity of the signal origin is specified in origin_vel and the velocity of the signal destination is specified in dest_vel. The dimensions of origin_vel and dest_vel must match the dimensions of origin_pos and dest_pos, respectively.

Electromagnetic fields propagating through an LOS channel can be polarized or nonpolarized. For nonpolarized fields, the propagating signal field, sig, is a vector or matrix. For polarized fields, sig is an array of structures. The structure elements represent an electric field vector in Cartesian form.

example

Input Arguments

expand all

Narrowband signal, specified as a matrix or struct array, depending on whether is signal or polarized or nonpolarized. The quantity M is the number of samples in the signal, and N is the number of LOS channels. Each channel corresponds to a source-destination pair.

  • Narrowband nonpolarized scalar signal. Specify sig as an M-by-N complex-valued matrix. Each column contains one signal propagated along the line-of-sight path.

    The size of the first dimension of the input matrix can vary to simulate a changing signal length. A size change can occur, for example, in the case of a pulse waveform with variable pulse repetition frequency.

  • Narrowband polarized signal. Specify sig as a 1-by-N struct array containing complex-valued fields. Each struct represents a polarized signal propagated along the line-of-sight path. Each struct element contains three M-by-1 complex-valued column vectors, sig.X, sig.Y, and sig.Z. These vectors represent the x, y, and z Cartesian components of the polarized signal.

    The size of the first dimension of the matrix fields within the struct can vary to simulate a changing signal length such as a pulse waveform with variable pulse repetition frequency.

Example: [1,1;j,1;0.5,0]

Data Types: double
Complex Number Support: Yes

Origin of signals, specified as a 3-by-1 real-valued column vector or 3-by-N real-valued matrix. The quantity N is the number of LOS channels. If origin_pos is a column vector, it takes the form [x;y;z]. If origin_pos is a matrix, each column specifies a different signal origin and has the form [x;y;z]. Units are in meters.

You cannot specify both origin_pos and dest_pos as matrices. At least one must be a 3-by-1 column vector.

Example: [1000;100;500]

Data Types: double

Destination position of the signal or signals, specified as a 3-by-1 real-valued column vector or 3-by-N real-valued matrix. The quantity N is the number of LOS channels propagating from or to N signal origins. If dest_pos is a 3-by-1 column vector, it takes the form [x;y;z]. If dest_pos is a matrix, each column specifies a different signal destination and takes the form [x;y;z] Position units are in meters.

You cannot specify both origin_pos and dest_pos as matrices. At least one must be a 3-by-1 column vector.

Example: [0;0;0]

Data Types: double

Velocity of signal origin, specified as a 3-by-1 real-valued column vector or 3-by-N real-valued matrix. The dimensions of origin_vel must match the dimensions of origin_pos. If origin_vel is a column vector, it takes the form [Vx;Vy;Vz]. If origin_vel is a 3-by-N matrix, each column specifies a different origin velocity and has the form [Vx;Vy;Vz]. Velocity units are in meters per second.

Example: [10;0;5]

Data Types: double

Velocity of signal destinations, specified as a 3-by-1 real-valued column vector or 3-by-N real-valued matrix. The dimensions of dest_vel must match the dimensions of dest_pos. If dest_vel is a column vector, it takes the form [Vx;Vy;Vz]. If dest_vel is a 3-by-N matrix, each column specifies a different destination velocity and has the form [Vx;Vy;Vz] Velocity units are in meters per second.

Example: [0;0;0]

Data Types: double

Output Arguments

expand all

Narrowband signal, returned as a matrix or struct array, depending on whether signal is polarized or nonpolarized. The quantity M is the number of samples in the signal and N is the number of narrowband LOS channels. Each channel corresponds to a source-destination pair.

  • Narrowband nonpolarized scalar signal. prop_sig is an M-by-N complex-valued matrix.

  • Narrowband polarized scalar signal. prop_sig is a 1-by-N struct array containing complex-valued fields. Each struct element contains three M-by-1 complex-valued column vectors, sig.X, sig.Y, and sig.Z. These vectors represent the x, y, and z Cartesian components of the polarized signal.

The prop_sig output contains signal samples arriving at the signal destination within the current time frame. The current time frame is the time frame of the input signals to the object. Whenever it takes longer than the current time frame for the signal to propagate from the origin to the destination, the output might not contain all contributions from the input of the current time frame. The remaining output appears in the next call to the object.

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

Propagate a sinusoidal signal in a line of sight (LOS) channel from a radar at (1000,0,0) meters to a target at (10000,4000,500) meters. Assume the signal propagates in medium fog specified by a liquid water density of 0.05 g/m3. Assume that the radar and the target are stationary. The signal carrier frequency is 10 GHz. The signal frequency is 500 Hz and the sample rate is 8.0 kHz.

Set up the transmitted signal.

fs = 8.0e3;
dt = 1/fs;
fsig = 500.0;
fc = 10.0e9;
t = [0:dt:.01];
sig = sin(2*pi*fsig*t);

Set the liquid water density and specify the LOS channel System object™.

lwd = 0.05;
channel = phased.LOSChannel('SampleRate',fs,'SpecifyAtmosphere',true,...
    'LiquidWaterDensity',lwd,'OperatingFrequency',fc);

Set the origin and destination of the signal.

xradar = [1000,0,0].';
vradar = [0,0,0].';
xtgt = [10000,4000,500].';
vtgt = [0,0,0].';

Propagate the signal from origin to destination and plot the result.

prog_sig = channel(sig.',xradar,xtgt,vradar,vtgt);
plot(t*1000,real(prog_sig))
grid
xlabel('Time (milliseconds)')
ylabel('Amplitude')

Figure contains an axes object. The axes object with xlabel Time (milliseconds), ylabel Amplitude contains an object of type line.

Propagate a polarized electromagnetic wave radiating from a short-dipole antenna element. The dipole is rotated 30° around the y-axis. Set the orientation of the local axis to coincide with the dipole. Assume the dipole radiates at 30.0 GHz. Propagate the signal toward a target approximately 10 km away.

Create the short-dipole antenna element and radiator System objects. Set the Polarization property to 'Combined' to generate polarized waves.

freq = 30.0e9;
c = physconst('LightSpeed');
antenna = phased.ShortDipoleAntennaElement('FrequencyRange',[100e6 40e9], ...
    'AxisDirection','Z');
radiator = phased.Radiator('Sensor',antenna, ...
    'PropagationSpeed',c, ...
    'OperatingFrequency',freq, ...
    'Polarization','Combined', ...
    'WeightsInputPort',false);

Create a signal to radiate. The signal envelope consists of several cycles of a 4 kHz sinusoid with amplitude set to unity. Set the sampling frequency to 1 MHz.

fsig = 4.0e3;
fs = 1.0e6;
t = [1:1000]/fs;
signal = sin(2*pi*fsig*t');
laxes = roty(30)*eye(3,3);

Use a phased.FreeSpace System object™ to propagate the field from the origin to the destination in free space.

fschannel = phased.FreeSpace('PropagationSpeed',c,...
    'OperatingFrequency',freq,...
    'TwoWayPropagation',false,...
    'SampleRate',fs);

Use a phased.LOSChannel System object to propagate the field from the origin to the destination in the LOS channel. Attenuation is due to atmospheric gases and fog.

loschannel = phased.LOSChannel('PropagationSpeed',c,...
    'OperatingFrequency',freq,...
    'TwoWayPropagation',false,...
    'SampleRate',fs,'SpecifyAtmosphere',true,'LiquidWaterDensity',0.5);

Set the signal origin, signal origin velocity, signal destination, and signal destination velocity.

source_pos = [0;0;0];
target_pos = [10000;200;0];
source_vel = [0;0;0];
target_vel = [0;0;0];
[~,radiatingAngles] = rangeangle(target_pos,source_pos,laxes);

Radiate the signal towards the target. The radiated signal is a struct containing the polarized field.

rad_sig = radiator(signal,radiatingAngles,laxes);

Propagate the signals to the target in free space.

prop_sig = fschannel(rad_sig,source_pos,target_pos,...
    source_vel,target_vel);

Propagate the signals to the target in the LOS channel.

prop_att_sig = loschannel(rad_sig,source_pos,target_pos,...
    source_vel,target_vel);

Plot the z-components of both the free-space and LOS-channel-propagated signals.

plot(1e6*t,real(prop_sig.Z),1e6*t,real(prop_att_sig.Z))
grid
xlabel('Time (\mu sec)')
legend('z_{fsp}','z_{los}')

Figure contains an axes object. The axes object with xlabel Time ( mu blank sec) contains 2 objects of type line. These objects represent z_{fsp}, z_{los}.

The LOS channel signal is attenuated as compared to the free-space signal.

More About

expand all

References

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

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

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

[4] Seybold, J. Introduction to RF Propagation. New York: Wiley & Sons, 2005.

[5] Skolnik, M. Introduction to Radar Systems, 3rd Ed. New York: McGraw-Hill, 2001.

Extended Capabilities

Version History

Introduced in R2016a