phased.ScatteringMIMOChannel
Scattering MIMO channel
Description
The phased.ScatteringMIMOChannel
System object™ models a multipath propagation channel where a transmitting array radiates
signals that reflect off multiple scatterers and travel back toward a receiving array.
In this channel, propagation paths are line of sight from point to point. The object
models range-dependent time delay, gain, Doppler shift, phase change, and atmospheric
loss due to gases, rain, fog, and clouds.
The attenuation models for atmospheric gases and rain are valid for electromagnetic signals in the frequency range from 1 through 1000 GHz. The attenuation model for fog and clouds is valid from 10 through 1000 GHz. Outside of these frequency ranges, the object uses the nearest valid value.
To compute the multipath propagation for specified source and receiver points:
Create the
phased.ScatteringMIMOChannelobject and set its properties.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
Syntax
Description
scatteringMIMOChannel = phased.ScatteringMIMOChannel
creates a scattering MIMO propagation channel System object, scatteringMIMOChannel.
scatteringMIMOChannel = phased.ScatteringMIMOChannel(
sets properties using optional name-value arguments.Name=Value)
Properties
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.
Transmitting array, specified as a Phased Array System Toolbox element, Phased Array System Toolbox antenna array, or Phased Array System Toolbox subarray.
Example: phased.URA
Receiving array, specified as a Phased Array System Toolbox element, Phased Array System Toolbox antenna array, or Phased Array System Toolbox subarray.
Example: phased.URA
Signal propagation speed, specified as a positive scalar. Units are in
meters per second. See physconst for more
information.
Data Types: single | double
Signal carrier frequency, specified as a positive scalar. Units are in Hz.
Example: 100e6
Data Types: single | double
Polarization configuration, specified as "None",
"Combined", or "Dual". When you
set this property to "None", the output field is a scalar
field. Set this property to "Combined" to polarize the
radiated fields, and the sensor interprets them as a single signal in its
inherent polarization. When you set this property to
"Dual", the H and
V polarization components of the radiated field are
independent signals.
Option to enable the atmospheric attenuation model, specified as a
false (logical 0) or
true (logical 1). 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,
WaterVaporDensity,
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: single | 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: single | 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: single | 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: single | 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: single | double
Sample rate of the signal, specified as a positive scalar. Units are in Hz. The object uses this quantity to calculate the propagation delay in units of samples.
Example: 1e6
Data Types: single | double
Option to enable the signal propagation along the direct path, specified
as false or 0 or
true or 1. The direct path is a
line-of-sight path from the transmitting array to the receiving array with
no scattering.
Data Types: logical
Option to enable output of the channel response, specified as
false (logical 0) or true (logical
1). Set this property to trueto output the channel
response and time delay by using the chmatrix and
tau output arguments of the step method.
Data Types: logical
Source of the maximum delay value, specified as "Auto"
or "Property". When you set this property to
"Auto", the channel automatically allocates enough
memory to simulate the propagation delay. When you set this property to
"Property", you can specify the maximum delay by
using the MaximumDelay property. Signals arriving after
the maximum delay are ignored.
Maximum signal delay, specified as a positive scalar. The object ignores the delays greater than this value. Units are in seconds.
Dependencies
To enable this property, set the
MaximumDelaySource property to
"Property".
Data Types: single | double
Interpolation method used in the channel fractional delay filter, specified as
"Linear" or "FIR".
When set to
"Linear", the fractional delay interpolation filter uses the two samples nearest to the specified delay to compute the interpolated sample value. The interpolation filter in the"Linear"method does not introduce any latency to the output signal. This method may result in considerable bandwidth loss and signal distortion.When set to
"FIR", the fractional delay interpolation filter is an FIR filter with 16 taps, providing improved performance. The FIR method introduces an output signal latency of 8 samples, which is included in the total channel latency reported by the read-onlyOutputSignalLatencyproperty
Example: "FIR"
Data Types: char | string
Output signal latency, set as a scalar. This read-only property reports the total
latency introduced by the channel. When the FractionalDelayMethod
property is set to "Linear" the latency is zero because the linear
interpolation method does not add delay. When the
FractionalDelayMethod is set to "FIR", the
latency is 8 samples, corresponding to the delay introduced by a 16-tap FIR
interpolation filter.
Data Types: double
Source of the transmitting array motion parameters, specified as
"Property" or "Input port".
When you set this property to
"Property", the transmitting array is stationary. Then, you can specify the location and orientation of the array using theTransmitArrayPositionandTransmitArrayOrientationAxesproperties.When you set this property to
"Input port", specify the transmitting array location, velocity, and orientation by using thetxpos,txvel, andtxaxesinput arguments of the object (when you call the object as if it were a function).
Position of the transmitting array phase center, specified as a
real-valued three-element vector in Cartesian form,
[x;y;z], with respect to the global coordinate
system. Units are in meters.
Example: [1000;-200;55]
Dependencies
To enable this property, set the
TransmitArrayMotionSource property to
"Property".
Data Types: single | double
Orientation of transmitting array, specified as a real-valued 3-by-3 orthonormal matrix. The matrix specifies the three axes, (x,y,z), that define the local coordinate system of the array with respect to the global coordinate system. Matrix columns correspond to the axes of the local array coordinate system.
Example: rotz(45)
Dependencies
To enable this property, set the
TransmitArrayMotionSource property to
"Property".
Data Types: single | double
Source of the receiving array motion parameters, specified as
"Property" or "Input port".
When you set this property to
"Property", the receiving array is stationary. Then, you can specify the location and orientation of the array by using theReceiveArrayPositionandReceiveArrayOrientationAxesproperties.When you set this property to
"Input port", you can specify the receiving array location, velocity, and orientation by using therxpos,rxvel, andrxaxesinput arguments of the object (when you call the object as if it were a function).
Position of the receiving array phase center, specified as a real-valued
three-element vector in Cartesian form,[x;y;z], with
respect to the global coordinate system. Units are in meters.
Example: [1000;-200;55]
Dependencies
To enable this property, set the
ReceiveArrayMotionSource property to
"Property".
Data Types: single | double
Orientation of receiving array, specified as a real-valued 3-by-3 orthonormal matrix. The matrix specifies the three axes, (x,y,z), that define the local coordinate system of the array with respect to the global coordinate system. Matrix columns correspond to the axes of the local array coordinate system.
Example: roty(60)
Dependencies
To enable this property, set the
ReceiveArrayMotionSource property to
"Property".
Data Types: single | double
Source of scatterer parameters, specified as "Auto",
"Property", or "Input port".
When you set this property to
"Auto", the object generates all scatterer positions and coefficients randomly. Scatterer velocities are zero. The object contains the generated positions within the region defined by theScattererPositionBoundary. To set the number of scatterers, use theNumScatterersproperty.When you set this property to
"Property", you can set the scatterer positions by using theScattererPositionproperty and the scattering coefficients by using theScattererCoefficientproperty. All scatterer velocities are zero.When you set this property to
"Input port", you can specify the scatterer positions, velocities, and scattering coefficients using thescatpos,scatvel, andscatcoefinput arguments of the object (when you call the object as if it were a function).
Data Types: char | string
Number of scatterers, specified as a nonnegative integer.
Example: 9
Dependencies
To enable this property, set the
ScattererSpecificationSource property to
"Auto".
Data Types: single | double
Boundary of the scatterer positions, specified as a 1-by-2 real-valued row
vector or a 3-by-2 real-valued matrix. The vector specifies the minimum and
maximum, [minbdry maxbdry], for all three dimensions. The
matrix specifies boundaries in all three dimensions in the form
[x_minbdry x_maxbdry;y_minbdry y_maxbdry; z_minbdry
z_maxbdry].
Example: [-1000 500;-100 100;-200 0]
Dependencies
To enable this property, set the
ScattererSpecificationSource property to
"Auto".
Data Types: single | double
Positions of the scatterers, specified as real-valued
3-by-K matrix. K is the number of
scatterers. Each column represents a different scatterer and has the
Cartesian form [x;y;z] with respect to the global
coordinate system. Units are in meters.
Example: [1050 -100;-300 55;0 -75]
Dependencies
To enable this property, set the
ScattererSpecificationSource property to
"Property".
Data Types: single | double
Scattering coefficients, specified as a complex-valued 1-by-K vector. K is the number of scatterers. Units are dimensionless.
Example: 2+1i
Dependencies
To enable this property, set the
ScattererSpecificationSource property to
"Property".
Data Types: single | double
Complex Number Support: Yes
Scattering matrices of the scatterers, specified as a complex–valued
2-by-2-by-Ns array.
Ns is the number of
scatterers. Each page of this array represents the scattering matrix of a
scatterer. Each scattering matrix has the form
[shh
shv;svh
svv]. For example, the component
shv specifies the complex
scattering response when the input signal is vertically polarized and the
reflected signal is horizontally polarized. The other components follow a
similar definition. Units are in square meters.
Dependencies
To enable this property, set the
ScatteringMatrixSource property to
"Property" and the
Polarization property to
"Combined" or "Dual".
Data Types: single | double
Complex Number Support: Yes
Orientation of the scatterers, specified as a real–valued 3-by-3-by-Ns array. Ns is the number of scatterers. Each page of this array is an orthonormal matrix. Matrix columns represent the axis of the local coordinates (x,y,z) of the scatterer with respect to the global coordinate system.
Example: roty(45)
Dependencies
To enable this property, set the
ScatteringMatrixSource property to
"Property" and the
Polarization property to
"Combined" or "Dual".
Data Types: single | double
Source of random number generator seed, specified as
"Auto" or "Property".
When you set this property to
"Auto", random numbers are generated using the default MATLAB® random number generator.When you set this property to
"Property", the object uses a private random number generator with the seed specified by the value of theSeedproperty.
To use this object with Parallel Computing Toolbox™ software, set this property to
"Auto".
Dependencies
To enable this property, set the
ScattererSpecificationSource property to
"Auto".
Random number generator seed, specified as a nonnegative integer less than 232.
Example: 5005
Dependencies
To enable this property, set the
ScattererSpecificationSource property to
"Auto" and the SeedSource
property to "Property".
Data Types: single | double
Usage
Syntax
Description
uses the scattering MIMO channel, Y = scatteringMIMOChannel(channel,X)channel, to propagate a
signal, X, from a transmitting array towards multiple
scatterers, and returns the scattered signals, Y, to a
receiving array.
To enable this syntax, set the TransmitArrayMotionSource,
ReceiveArrayMotionSource, and
ScattererSpecificationSource properties to
"Property".
[propagates
the polarized signals, YH,YV] = scatteringMIMOChannel(channel,[XH,XV])XH and XV,
through the H-port and V-port of the
transmit array. The object returns the received signals, YH
and YV to the H-port and
V-port of the receive array.
To enable this syntax, set the Polarization property to
"Dual".
[___] = scatteringMIMOChannel(___,
specifies the scatterer positions and velocities, and the scattering
coefficients.scatpos,scatvel,scatcoef)
To enable this syntax, set the TransmitArrayMotionSource
and ReceiveArrayMotionSource properties to
"Property", set
ScattererSpecificationSource to "Input
port', and set the Polarization property to
"None'.
[___] = scatteringMIMOChannel(___,
specifies the scatterer positions, scatpos,scatvel,scatmat,scataxes)scatpos, and velocities,
scatvel, the scattering matrix,
scatmat, and the scatterer orientation axes,
scataxes.
To enable this syntax, set the TransmitArrayMotionSource
and ReceiveArrayMotionSource properties to
"Property", set
ScattererSpecificationSource to "Input
port", and set the Polarization property to
"Combined" or "Dual".
[___,
also returns the channel response matrix, CR,TAU]
= scatteringMIMOChannel(channel,___)CR, and the
channel path delays, TAU, using any of the previous input
argument combinations.
To enable this syntax, set the ChannelResponseOutputPort
property to true and set the
Polarization property to "None" or
"Combined".
[___,
also returns the channel response matrices,
CRHH,CRHV,CRVH,CRVV,TAU]
= scatteringMIMOChannel(channel,___)CRHH,
CRHV,
CRVH, and
CRVV, using any of the
previous input argument combinations.
To enable this syntax, set the ChannelResponseOutputPort
property to true and set the
Polarization property to
"Dual".
[___] = scatteringMIMOChannel(___,
uses steert)steert as the subarray steering angle for the transmit
array. This syntax is only applicable when you use subarrays in the
TransmitArray property and set the
SubarraySteering property in the
ReceiveArray to either "Phase" or
"Time".
[___] = scatteringMIMOChannel(___,
specifies the element weights, wst)wst for each element within
the transmit array subarrays. This syntax is applicable when you use a subarray
as the transmit array and set the SubarraySteering property
to "Custom' or an phased.NRRectangularPanelArray
System object that uses each panel as a subarray.
[___] = scatteringMIMOChannel(___,
uses steerr)steerr as the subarray steering angle for the receive
array. This syntax is only applicable when you use subarrays in the
ReceiveArray property, set the
SubarraySteering property in the
ReceiveArray to either "Phase" or
"Time".
[___] = scatteringMIMOChannel(___,
specifies the element weights, wsr)wsr, for each element within
the receive array subarrays. This syntax is applicable when you use a subarray
as the receive array and set the SubarraySteering property
to "Custom" or an phased.NRRectangularPanelArray
System object that uses each panel as a subarray.
[
combines optional input arguments when you set their enabling properties.Y,CR,TAU]
= scatteringMIMOChannel(channel,X,steert,steerr,txpos,txvel,txaxesrxpos,rxvel,rxaxes,scatpos,scatvel,scatcoef)
Note
You can combine optional input arguments by enabling their respective properties, as shown in the previous two syntaxes.
Input Arguments
Scattering MIMO channel, specified as a phased.ScatteringMIMOChannel
System object.
Example: phased.ScatteringMIMOChannel
Transmitted narrowband signal, specified as an M-by-Nt complex-valued matrix. The quantity M is the number of samples in the signal, and Nt is the number of transmitting array elements. Each column represents the signal transmitted by the corresponding array element.
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.
Example: [1,1;j,1;0.5,0]
Dependencies
To enable this argument, set the Polarization
property to 'None' or
'Combined'.
Data Types: single | double
Complex Number Support: Yes
Transmitted narrowband H-polarization signal, specified as an M-by-Nt complex-valued matrix. The quantity M is the number of samples in the signal, and Nt is the number of transmitting array elements. Each column represents the signal transmitted by the corresponding array element.
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.
Example: [1,1;j,1;0.5,0]
Dependencies
To enable this argument, set the Polarization
property to 'Dual'.
Data Types: single | double
Complex Number Support: Yes
Transmitted narrowband V-polarization signal, specified as an M-by-Nt complex-valued matrix. The quantity M is the number of samples in the signal, and Nt is the number of transmitting array elements. Each column represents the signal transmitted by the corresponding array element.
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.
Example: [1,1;j,1;0.5,0]
Dependencies
To enable this argument, set the Polarization
property to 'Dual'.
Data Types: single | double
Complex Number Support: Yes
Position of transmitting antenna array, specified as real-valued
three-element column vector taking the form [x;y;z].
The vector elements correspond to the x,
y, and z positions of the
array. Units are in meters.
Example: [1000;100;500]
Dependencies
To enable this argument, set the
TransmitArrayMotionSource property to
"Input port".
Data Types: single | double
Velocity of transmitting antenna array, specified as a real-valued
three-element column vector taking the form
[vx;vy;vz]. The vector elements correspond to the
x, y, and z
velocities of the array. Units are in meters per second.
Example: [10;0;5]
Dependencies
To enable this argument, set the
TransmitArrayMotionSource property to
"Input port".
Data Types: single | double
Transmit subarray steering angle, specified as a scalar or a
real-valued length-2 column vector. If steert is a
vector, it takes the form of
[AzimuthAngle;ElevationAngle]. If
steert is a scalar, it represents the azimuth
angle of the steering direction. The elevation angle is assumed to be
zero. Units are in degrees.
Dependencies
This argument applies when you set the
SubarraySteering property of subarrays
specified by the TransmitArray property to
either "Phase" or
"Time".
Data Types: single | double
Receive subarray steering angle, specified as a scalar or a
real-valued length-2 column vector. If steerr is a
vector, it takes the form of
[AzimuthAngle;ElevationAngle]. If
steert is a scalar, it represents the azimuth
angle of the steering direction. The elevation angle is assumed to be
zero. Units are in degrees.
Dependencies
This argument applies when you set the
SubarraySteering property of subarrays
specified by the ReceiveArray property to
either "Phase" or
"Time".
Data Types: single | double
Transmit array element weights, specified as a matrix or a cell array.
Dependencies
This argument applies when you use a subarray to transmit and set
the SubarraySteering property to
"Custom" or use an NR rectangular panel array
phased.NRRectangularPanelArray having each panel as a
subarray.
Data Types: single | double
Complex Number Support: Yes
Receive array element weights, specified as a matrix or a cell array.
Dependencies
This argument applies when you use a subarray to receive and set
the SubarraySteering property to
"Custom" or use an phased.NRRectangularPanelArray
System object with each panel as a subarray.
Data Types: single | double
Complex Number Support: Yes
Axes orientation of transmitting antenna array, specified as a real-valued 3-by-3 real orthonormal matrix. The matrix defines the orientation of the array local coordinate system with respect to the global coordinates. Matrix columns correspond to the directions of the x, y, and z axes of the local coordinate system. Units are dimensionless.
Example: rotx(35)
Dependencies
To enable this argument, set the
TransmitArrayMotionSource property to
"Input port".
Data Types: single | double
Position of receiving antenna array, specified as a real-valued
three-element column vector taking the form [x;y;z].
The vector elements correspond to the x,
y, and z positions of the
array. Units are in meters.
Example: [1000;100;500]
Dependencies
To enable this argument, set the
ReceiveArrayMotionSource property to
"Input port".
Data Types: single | double
Velocity of receiving antenna array, specified as a real-valued
three-element column vector taking the form
[vx;vy;vz]. The vector elements correspond to the
x, y, and z
velocities of the array. Units are in meters per second.
Example: [10;0;5]
Dependencies
To enable this argument, set the
ReceiveArrayMotionSource property to
"Input port".
Data Types: single | double
Axes orientation of receiving antenna array, specified as a real-valued 3-by-3 real orthonormal matrix. The matrix defines the orientation of the array local coordinate system with respect to the global coordinates. Matrix columns correspond to the directions of the x, y, and z axes of the local coordinate system. Units are dimensionless.
Example: rotx(35)
Dependencies
To enable this argument, set the
ReceiveArrayMotionSource property to
"Input port".
Data Types: single | double
Positions of scatterers, specified as a real-valued
3-by-Ns matrix. The
matrix contains the (x,y,z) positions of scatterers.
Each column of the matrix specifies a different scatterer and takes the
form [x;y;z]. Units are in meters.
Example: [1000;100;500]
Dependencies
To enable this argument, set the
ScattererSpecificationSource property to
"Input port".
Data Types: single | double
Velocities of scatterers, specified as a real-valued
3-by-Ns matrix. The
matrix contains the
(vx,vy,vz)
positions of scatterers. Each column of the matrix specifies a different
scatterer and takes the form [vx;vy;vz] Units are in
meters per second.
Example: [1000;100;500]
Dependencies
To enable this argument, set the
ScattererSpecificationSource property to
"Input port".
Data Types: single | double
Scattering coefficients, specified as a complex-valued 1-by-Nsrow vector. Each vector element specifies the scattering coefficient of the corresponding scatterer. Units are dimensionless.
Example: [5+3*1i;4+1i;2]
Dependencies
To enable this argument, set the
ScattererSpecificationSource property to
"Input port" and the
Polarization property to
'None'.
Data Types: single | double
Complex Number Support: Yes
Scattering matrices of the scatterers, specified as a complex–valued
2-by-2-by-Ns array where
Ns is the number of
scatterers. Each page of this array represents the scattering matrix of
a scatterer. Each scattering matrix has the form [s_hh
s_hv;s_vh s_vv]. For example, the component
s_hv specifies the complex scattering response
when the input signal is vertically polarized and the reflected signal
is horizontally polarized. The other components are defined similarly.
Units are in square meters.
Dependencies
To enable this property, set the
ScattererSpecificationSource property to
"Input port" and the
Polarization property to
"Combined" or
"Dual".
Data Types: single | double
Complex Number Support: Yes
Scatterer orientation axes, specified as a real-valued 3-by-3-by-Ns array where Ns is the number of scatterers. Each page of this array represents the orientation axes matrix of a scatterer. The columns of the matrix represent the x- ,y-, and z-axes of the scatterer. Units are dimensionless.
Dependencies
To enable this property, set the
ScattererSpecificationSource property to
"Input port" and the
Polarization property to
"Combined" or
"Dual".
Data Types: single | double
Output Arguments
Received narrowband signal, returned as an M-by-Nr complex-valued matrix. M is the number of samples in the signal, and Nr is the number of receiving array elements. Each column represents the signal received by the corresponding array element.
Example: [1,1;j,1;0.5,0]
Dependencies
To enable this argument, set the Polarization
property to "None" or
"Combined".
Data Types: double
Complex Number Support: Yes
Received narrowband H-polarization signal, returned as a complex-valued M-by-Nr matrix. M is the number of samples in the signal, and Nr is the number of receiving array elements. Each column represents the signal received by the corresponding array element.
Example: [1,1;j,1;0.5,0]
Dependencies
To enable this argument, set the Polarization
property to "Dual".
Data Types: double
Complex Number Support: Yes
Received narrowband V-polarization signal, returned as a complex-valued M-by-Nr matrix. M is the number of samples in the signal, and Nr is the number of receiving array elements. Each column represents the signal received by the corresponding array element.
Example: [1,1;j,1;0.5,0]
Dependencies
To enable this argument, set the Polarization
property to "Dual".
Data Types: double
Complex Number Support: Yes
Channel response, returned as an Nt-by-Nr-by-Nc complex-valued array.
Nt is the number of transmitting array elements.
Nr is the number of receiving array elements.
When you specify
SimulateDirectPathasfalse, Nc = Ns, the number of scatterers.When you specify
SimulateDirectPathastrue, Nc = Ns + 1 to account for the direct path.
Each page of the array corresponds to the channel response matrix for a specific scatterer.
Dependencies
To enable this argument, set the
ChannelResponseOutputPort property to
true and the
Polarization property to
"None" or
"Combined".
Data Types: double
Complex Number Support: Yes
Channel response from H-polarization input to H-polarization output returned as a complex-valued Nt-by-Nr-by-Nc array.
Nt is the number of transmitting array elements.
Nr is the number of receiving array elements.
When you specify
SimulateDirectPathasfalse, Nc = Ns, the number of scatterers.When you specify
SimulateDirectPathastrue, Nc = Ns + 1 to account for the direct path.
Each page of the array corresponds to the channel response matrix for a specific scatterer.
Dependencies
To enable this argument, set the
ChannelResponseOutputPort property to
true and the
Polarization property to
"Dual".
Data Types: double
Complex Number Support: Yes
Channel response from H-polarization input to V-polarization output returned as a complex-valued Nt-by-Nr-by-Nc array.
Nt is the number of transmitting array elements.
Nr is the number of receiving array elements.
When you specify
SimulateDirectPathasfalse, Nc = Ns, the number of scatterers.When you specify
SimulateDirectPathastrue, Nc = Ns + 1 to account for the direct path.
Each page of the array corresponds to the channel response matrix for a specific scatterer.
Dependencies
To enable this argument, set the
ChannelResponseOutputPort property to
true and the
Polarization property to
'Dual'.
Data Types: double
Complex Number Support: Yes
Channel response from V-polarization input to H-polarization output returned as a complex-valued Nt-by-Nr-by-Nc array.
Nt is the number of transmitting array elements.
Nr is the number of receiving array elements.
When you specify
SimulateDirectPathasfalse, Nc = Ns, the number of scatterers.When you specify
SimulateDirectPathastrue, Nc = Ns + 1 to account for the direct path.
Each page of the array corresponds to the channel response matrix for a specific scatterer.
Dependencies
To enable this argument, set the
ChannelResponseOutputPort property to
true and the
Polarization property to
'Dual'.
Data Types: double
Complex Number Support: Yes
Channel response from V-polarization input to V-polarization output returned as a complex-valued Nt-by-Nr-by-Nc array.
Nt is the number of transmitting array elements.
Nr is the number of receiving array elements.
When you specify
SimulateDirectPathasfalse, Nc = Ns, the number of scatterers.When you specify
SimulateDirectPathastrue, Nc = Ns + 1 to account for the direct path.
Each page of the array corresponds to the channel response matrix for a specific scatterer.
Dependencies
To enable this argument, set the
ChannelResponseOutputPort property to
true and the
Polarization property to
'Dual'.
Data Types: double
Complex Number Support: Yes
Path delays, returned as a 1-by-NC real-valued vector. Each element corresponds to the path time delay from the transmitting array phase center to a scatterer and then to the receiving array phase center.
When you specify
SimulateDirectPathasfalse, Nc = Ns, the number of scatterers.When you specify
SimulateDirectPathastrue, Nc = Ns + 1 to account for the direct path.
Dependencies
To enable this argument, set the
ChannelResponseOutputPort property to
true.
Data Types: double
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)
Examples
Create a 30 GHz MIMO channel with random scatterers. The scenario contains a stationary 21-element transmitting ULA array and a stationary 15-element receiving ULA array. The transmitting antennas have cosine responses and the receiving antennas are isotropic. Element spacing for both arrays is less than one-half wavelength. The channel has 50 randomly generated static scatterers within a specified bounding box. The transmit array is located at [0;20;50] meters and the receive array is located at [200;10;10] meters. Compute the propagated signal through this channel. The sample rate for the signal is 10 MHz.
fc = 30e9; c = physconst("LightSpeed"); lambda = c/fc; fs = 10e6; txarray = phased.ULA(Element=phased.CosineAntennaElement,... NumElements=21,ElementSpacing=0.45*lambda); rxarray = phased.ULA(Element=phased.IsotropicAntennaElement,... NumElements=15,ElementSpacing=0.45*lambda); channel = phased.ScatteringMIMOChannel(TransmitArray=txarray,... ReceiveArray=rxarray,PropagationSpeed=c,CarrierFrequency=fc,... SampleRate=fs,TransmitArrayPosition=[0;20;50],... ReceiveArrayPosition=[200;10;10],NumScatterers=50,... ScattererPositionBoundary=[10 180; -30 30; -30 30]);
Create a random data signal of ones and zeros for each transmitter.
x = randi(2,[100 21]) - 1;
Compute the received signals after propagating through the channel.
y = channel(x);
Create a MIMO channel containing 3 fixed scatterers. The scenario contains a 21-element transmitting ULA array operating at 72 GHz, and a 15-element receiving ULA array. The transmitting elements have cosine response shapes and the receiving antennas are isotropic. Only the transmitting antenna is moving. Element spacing for both arrays is less than one-half wavelength. The transmitting array starts at (0,20,50) meters and moves towards the receiver at 2 m/s. The receiving array is located at (200,10,10) meters. Compute the propagated signal through this channel. The sample rate for the signal is 10 MHz.
fc = 72e9; c = physconst("LightSpeed"); lambda = c/fc; fs = 10e6; txplatform = phased.Platform(MotionModel="Velocity",InitialPosition=[0;20;50], ... Velocity=[2;0;0]); txarray = phased.ULA(Element=phased.CosineAntennaElement, ... NumElements=21,ElementSpacing=0.45*lambda); rxarray = phased.ULA(Element=phased.IsotropicAntennaElement, ... NumElements=15,ElementSpacing=0.45*lambda); channel = phased.ScatteringMIMOChannel(TransmitArray=txarray, ... ReceiveArray=rxarray,PropagationSpeed=c,CarrierFrequency=fc,... SampleRate=fs,TransmitArrayMotionSource="Input port", ... ReceiveArrayMotionSource="Property",ReceiveArrayPosition=[200;10;10],... ReceiveArrayOrientationAxes=rotz(180),... ScattererSpecificationSource="Property", ... ScattererPosition=[75 100 120; -10 20 12; 5 -5 8], ... ScattererCoefficient=[1i,2+3i,-1+1i]);
Move the platforms for two time steps at one second intervals. For each time instance:
Create a random data signal of ones and zeros for each transmitter element.
Move the transmitter and receiver. The orientations are fixed.
Propagate the signals from transmitters to scatterers to receiver.
for k =1:2 x = randi(2,[100 21]) - 1; [txpos,txvel] = txplatform(1); txaxes = eye(3); y = channel(x,txpos,txvel,txaxes); end
Create a MIMO channel containing 3 fixed scatterers. The scenario contains a 21-element transmitting ULA array and a 15-element receiving ULA array. Both arrays operate at 72 GHz. The transmitting elements have cosine response shapes and the receiving antennas are isotropic. Only the receiving antenna is moving. Element spacing for both arrays is less than one-half wavelength. The transmitting array is located at (0,20,50) meters. The receiving array starts at (200,10,10) meters and moves toward the transmitter at 2 m/s. Compute the propagated signal through this channel. The sample rate for the signal is 10 MHz.
fc = 72e9; c = physconst("LightSpeed"); lambda = c/fc; fs = 10e6; rxplatform = phased.Platform(MotionModel="Velocity",InitialPosition=[200;10;10],... Velocity=[-2;0;0]); txarray = phased.ULA(Element=phased.CosineAntennaElement, ... NumElements=21,ElementSpacing=0.45*lambda); rxarray = phased.ULA(Element=phased.IsotropicAntennaElement, ... NumElements=15,ElementSpacing=0.45*lambda); channel = phased.ScatteringMIMOChannel(TransmitArray=txarray, ... ReceiveArray=rxarray,PropagationSpeed=c,CarrierFrequency=fc, ... SampleRate=fs,TransmitArrayMotionSource="Property",... TransmitArrayPosition=[0;20;50],TransmitArrayOrientationAxes=eye(3,3), ... ReceiveArrayMotionSource="Input port", ... ScattererSpecificationSource="Property", ... ScattererPosition=[75 100 120; -10 20 12; 5 -5 8], ... ScattererCoefficient=[1i,2+3i,-1+1i], ... SpecifyAtmosphere=false);
Move the platforms for two time steps at one-second intervals. For each time instance:
Create a random data signal of ones and zeros for each transmitter element.
Move the transmitter and receiver. Fix the array orientations.
Propagate the signals from transmitters to scatterers to receiver.
for k =1:2 x = randi(2,[100 21]) - 1; [rxpos,rxvel] = rxplatform(1); rxaxes = rotz(45); y = channel(x,rxpos,rxvel,rxaxes); end
Create a MIMO channel at 30 GHz with a 16-element transmit array and a 64-element receive array. Assume the elements are short-dipole antennas and the arrays are uniform linear arrays. The transmit array is located at [0;0;50] meters.
The receive array has an initial position at [200;0;0] meters and is moving at a speed of [10;0;0] meters/second. There are 200 static scatterers randomly located on the xy plane within a square centered at [200;0;0] and with a side length of 100 meters.
Use the channel to compute the propagated polarized signal. Assume the sample rate for the signal is 10 MHz and the frame length is 1000 samples. Collect 5 frames of received signal.
fc = 30e9; c = 3e8; lambda = c/fc; fs = 10e6; txarray = phased.ULA(Element=phased.ShortDipoleAntennaElement,... NumElements=16,ElementSpacing=lambda/2); rxarray = phased.ULA(Element=phased.ShortDipoleAntennaElement,... NumElements=64,ElementSpacing=lambda/2); Ns = 200; scatpos = [100*rand(1,Ns) + 150; 100*rand(1,Ns) + 150; zeros(1,Ns)]; temp = randn(1,Ns) + 1i*randn(1,Ns); scatcoef = repmat(eye(2),1,1,Ns).*permute(temp,[1 3 2]); scatax = repmat(eye(3),1,1,Ns); Nframesamp = 1000; Tframe = Nframesamp/fs; rxmobile = phased.Platform(InitialPosition=[200;0;0],... Velocity=[10;0;0],OrientationAxesOutputPort=true); chan = phased.ScatteringMIMOChannel(... TransmitArray=txarray,... ReceiveArray=rxarray,... PropagationSpeed=c,... CarrierFrequency=fc,... SampleRate=fs,... Polarization="Dual",... TransmitArrayPosition=[0;0;50],... ReceiveArrayMotionSource="Input port",... ScattererSpecificationSource="Property",... ScattererPosition=scatpos,... ScatteringMatrix=scatcoef,... ScattererOrientationAxes=scatax); xh = randi(2,[Nframesamp 16])-1; xv = randi(2,[Nframesamp 16])-1; for m = 1:5 [rxpos,rxvel,rxax] = rxmobile(Tframe); [yh,yv] = chan(xh,xv,rxpos,rxvel,rxax); end
Create a MIMO channel containing 3 moving scatterers. The scenario contains a 21-element transmitting ULA array and a 15-element receiving ULA array. Both arrays operate at 72 GHz. The transmitting elements have cosine responses and the receiving antennas are isotropic. Element spacing for both arrays is less than one-half wavelength. The transmitting array is located at (0,20,50) meters. The receiving array is located at (200,10,10) meters. Compute the propagated signal through this channel. The sample rate for the signal is 10 MHz. Obtain the channel response matrix and time delays.
fc = 30e9; c = physconst("LightSpeed"); lambda = c/fc; fs = 10e6; txarray = phased.ULA(Element=phased.CosineAntennaElement, ... NumElements=21,ElementSpacing=0.45*lambda); rxarray = phased.ULA(Element=phased.IsotropicAntennaElement, ... NumElements=15,ElementSpacing=0.45*lambda); channel = phased.ScatteringMIMOChannel(TransmitArray=txarray, ... ReceiveArray=rxarray,PropagationSpeed=c,CarrierFrequency=fc, ... SampleRate=fs,TransmitArrayPosition=[0;20;50], ... ReceiveArrayPosition=[200;10;10],ScattererSpecificationSource="Input port", ... ChannelResponseOutputPort=true);
Create a random data signal of ones and zeros for each transmitter.
x = randi(2,[100 21]) - 1;
Compute the received signals after propagating through the channel. Also return the channel matrix and delays.
scatpos = [75 100 120; -10 20 12; 5 -5 8]; scatvel = [0 0.5 0; -0.1 1.2 0.04; .05 -0.45 0.8]; scatcoef = [1i,2+3i,-1+1i]; [y,chmat,delays] = channel(x,scatpos,scatvel,scatcoef);
Display the dimensions of the channel matrix.
size(chmat)
ans = 1×3
21 15 3
Display the time delays in microseconds.
delays*1e6
ans = 1×3
0.7310 0.7196 0.6919
More About
Attenuation or path loss in the scattering MIMO channel consists of four components. L = LfspLgLcLr, where:
Lfsp is the free-space path attenuation.
Lg is the atmospheric path attenuation.
Lc is the fog and cloud path attenuation.
Lr is the rain path attenuation.
Each component is in magnitude units, not in dB.
When the origin and destination are stationary relative to each other, you can write the output signal of a free-space channel as Y(t) = x(t-τ)/Lfsp. The quantity τ is the signal delay and Lfsp is the free-space path loss. The delay τ is given by R/c, where R is the propagation distance and c is the propagation speed. The free-space path loss is given by
where λ is the signal wavelength.
This formula assumes that the target is in the far field of the transmitting element or array. In the near field, the free-space path loss formula is not valid and can result in a loss smaller than one, equivalent to a signal gain. Therefore, the loss is set to unity for range values, R ≤ λ/4π.
When the origin and destination have relative motion, the processing also introduces a Doppler frequency shift. The frequency shift is v/λ for one-way propagation and 2v/λ for two-way propagation. The quantity v is the relative speed of the destination with respect to the origin.
For more details on free space channel propagation, see [8]
This model calculates the attenuation of signals that propagate through atmospheric gases.
Electromagnetic signals attenuate when they propagate through the atmosphere. This effect is due primarily to the absorption resonance lines of oxygen and water vapor, with smaller contributions coming from nitrogen gas. The model also includes a continuous absorption spectrum below 10 GHz. The ITU model Recommendation ITU-R P.676-10: Attenuation by atmospheric gases is used. The model computes the specific attenuation (attenuation per kilometer) as a function of temperature, pressure, water vapor density, and signal frequency. The atmospheric gas model is valid for frequencies from 1–1000 GHz and applies to polarized and nonpolarized fields.
The formula for specific attenuation at each frequency is
The quantity N"() is the imaginary part of the complex atmospheric refractivity and consists of a spectral line component and a continuous component:
The spectral component consists of a sum of discrete spectrum terms composed of a localized frequency bandwidth function, F(f)i, multiplied by a spectral line strength, Si. For atmospheric oxygen, each spectral line strength is
For atmospheric water vapor, each spectral line strength is
P is the dry air pressure, W is the water vapor partial pressure, and T is the ambient temperature. Pressure units are in hectoPascals (hPa) and temperature is in degrees Kelvin. The water vapor partial pressure, W, is related to the water vapor density, ρ, by
The total atmospheric pressure is P + W.
For each oxygen line, Si depends on two parameters, a1 and a2. Similarly, each water vapor line depends on two parameters, b1 and b2. The ITU documentation cited at the end of this section contains tabulations of these parameters as functions of frequency.
The localized frequency bandwidth functions Fi(f) are complicated functions of frequency described in the ITU references cited below. The functions depend on empirical model parameters that are also tabulated in the reference.
This model applies to both narrowband and wideband atmospheric attenuation. To compute the total attenuation for narrowband signals along a path, the function multiplies the specific attenuation by the path length, R. Then, the total attenuation is Lg= R(γo + γw). To apply the attenuation model to wideband signals, first, divide the wideband signal into frequency subbands, and apply attenuation to each subband. Then, sum all attenuated subband signals into the total attenuated signal.
For a complete description of this model, see [4].
This model calculates the attenuation of signals that propagate through fog or clouds.
Fog and cloud attenuation are due to the same atmospheric phenomenon. The ITU model, Recommendation ITU-R P.840-6: Attenuation due to clouds and fog is used. The model computes the specific attenuation (attenuation per kilometer), of a signal as a function of liquid water density, signal frequency, and temperature. The model applies to polarized and nonpolarized fields. The formula for specific attenuation at each frequency is
where M is the liquid water density in gm/m3. The quantity Kl(f) is the specific attenuation coefficient and depends on frequency. The cloud and fog attenuation model is valid for frequencies 10–1000 GHz. Units for the specific attenuation coefficient are (dB/km)/(g/m3).
To compute the total attenuation for narrowband signals along a path, the function multiplies the specific attenuation by the path length R. Total attenuation is Lc = Rγc. You can also apply the attenuation model to wideband signals. First, divide the wideband signal into frequency subbands, and apply narrowband attenuation to each subband. Then, sum all attenuated subband signals into the total attenuated signal.
For a complete description of this model, see [5]
This model calculates the attenuation of signals that propagate through regions of rainfall. Rain attenuation is a dominant fading mechanism and can vary from location-to-location and from year-to-year.
Electromagnetic signals are attenuated when propagating through a region of rainfall. Rainfall attenuation is computed according to the ITU rainfall model Recommendation ITU-R P.838-3: Specific attenuation model for rain for use in prediction methods. The model computes the specific attenuation (attenuation per kilometer) of a signal as a function of rainfall rate, signal frequency, polarization, and path elevation angle. The specific attenuation, ɣR, is modeled as a power law with respect to rain rate
where R is rain rate. Units are in mm/hr. The parameter k and exponent α depend on the frequency, the polarization state, and the elevation angle of the signal path. The specific attenuation model is valid for frequencies from 1–1000 GHz.
To compute the total attenuation for narrowband signals along a path, the function multiplies the specific attenuation by the an effective propagation distance, deff. Then, the total attenuation is L = deffγR.
The effective distance is the geometric distance, d, multiplied by a scale factor
where f is the frequency. The article Recommendation ITU-R P.530-17 (12/2017): Propagation data and prediction methods required for the design of terrestrial line-of-sight systems presents a complete discussion for computing attenuation.
The rain rate, R, used in these computations is the long-term statistical rain rate, R0.01. This is the rain rate that is exceeded 0.01% of the time. The calculation of the statistical rain rate is discussed in Recommendation ITU-R P.837-7 (06/2017): Characteristics of precipitation for propagation modelling. This article also explains how to compute the attenuation for other percentages from the 0.01% value.
You can also apply the attenuation model to wideband signals. First, divide the wideband signal into frequency subbands and apply attenuation to each subband. Then, sum all attenuated subband signals into the total attenuated signal.
More About
This System object supports single and double precision for input data, properties, and arguments. If any input data is single precision, the non-logical outputs are also single precision. If any input data is double precision, the non-logical outputs are double precision. The precision of the non-logical output is independent of the precision of the properties and other arguments.
References
[1] Heath, R. Jr. et al. “An Overview of Signal Processing Techniques for Millimeter Wave MIMO Systems”, arXiv.org:1512.03007 [cs.IT], 2015.
[2] Tse, D. and P. Viswanath, Fundamentals of Wireless Communications, Cambridge: Cambridge University Press, 2005.
[3] Paulraj, A. Introduction to Space-Time Wireless Communications, Cambridge: Cambridge University Press, 2003.
[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.
[7] Seybold, J. Introduction to RF Propagation. New York: Wiley & Sons, 2005.
[8] Skolnik, M. Introduction to Radar Systems, 3rd Ed. New York: McGraw-Hill, 2001.
Extended Capabilities
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).
Version History
Introduced in R2017aThis release supports steerable subarrays by setting the
EnablePanelSubarray and
SubarraySteering properties.
See Also
Functions
rangeangle|fogpl|gaspl|rainpl|fspl|diagbfweights|scatteringchanmtx|waterfill
Objects
phased.FreeSpace|phased.RadarTarget|phased.BackscatterRadarTarget|twoRayChannel(Radar Toolbox) |phased.LOSChannel
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)