Main Content

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:

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

scatteringMIMOChannel = phased.ScatteringMIMOChannel creates a scattering MIMO propagation channel System object, scatteringMIMOChannel.

scatteringMIMOChannel = phased.ScatteringMIMOChannel(Name=Value) sets properties using optional name-value arguments.

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.

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: double

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

Example: 100e6

Data Types: 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, 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 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: 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: 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 the TransmitArrayPosition and TransmitArrayOrientationAxes properties.

  • When you set this property to "Input port", specify the transmitting array location, velocity, and orientation by using the txpos, txvel, and txaxes input 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: 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: 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 the ReceiveArrayPosition and ReceiveArrayOrientationAxes properties.

  • When you set this property to "Input port", you can specify the receiving array location, velocity, and orientation by using the rxpos, rxvel, and rxaxes input 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: 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: 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 the ScattererPositionBoundary. To set the number of scatterers, use the NumScatterers property.

  • When you set this property to "Property", you can set the scatterer positions by using the ScattererPosition property and the scattering coefficients by using the ScattererCoefficient property. All scatterer velocities are zero.

  • When you set this property to "Input port", you can specify the scatterer positions, velocities, and scattering coefficients using the scatpos, scatvel, and scatcoef input 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: 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: 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: 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: 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: 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: 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 the Seed property.

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: double

Usage

Description

Y = scatteringMIMOChannel(channel,X) uses the scattering MIMO channel, 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".

example

[YH,YV] = scatteringMIMOChannel(channel,[XH,XV])propagates the polarized signals, 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".

example

[___] = scatteringMIMOChannel(___,txpos,txvel,txaxes) also specifies the transmitting array position, velocity, and axes orientation.

To enable this syntax, set the ReceiveArrayMotionSource and ScattererSpecificationSource properties to "Property" and set TransmitArrayMotionSource to 'Input port'.

example

[___] = scatteringMIMOChannel(___,rxpos,rxvel,rxaxes) specifies the receiving array position, velocity, and axes orientation.

To enable this syntax, set the TransmitArrayMotionSource and ScattererSpecificationSource properties to "Property" and set ReceiveArrayMotionSource to "Input port".

example

[___] = scatteringMIMOChannel(___,scatpos,scatvel,scatcoef) specifies the scatterer positions and velocities, and the scattering coefficients.

To enable this syntax, set the TransmitArrayMotionSource and ReceiveArrayMotionSource properties to "Property", set ScattererSpecificationSource to "Input port', and set the Polarization property to "None'.

example

[___] = scatteringMIMOChannel(___,scatpos,scatvel,scatmat,scataxes) specifies the scatterer positions, 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".

example

[___,CR,TAU] = scatteringMIMOChannel(channel,___) also returns the channel response matrix, 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".

example

[___,CRHH,CRHV,CRVH,CRVV,TAU] = scatteringMIMOChannel(channel,___) also returns the channel response matrices, 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(___,steert) uses 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(___,wst) specifies the element weights, 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(___,steerr) uses 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(___,wsr) specifies the element weights, 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.

[Y,CR,TAU] = scatteringMIMOChannel(channel,X,txpos,txvel,txaxesrxpos,rxvel,rxaxes,scatpos,scatvel,scatcoef) 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)combines optional input arguments when you set their enabling properties.

Note

You can combine optional input arguments by enabling their respective properties, as shown in the previous two syntaxes.

Input Arguments

expand all

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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: double

Output Arguments

expand all

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 SimulateDirectPath as false, Nc = Ns, the number of scatterers.

    • When you specify SimulateDirectPath as true, 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 SimulateDirectPath as false, Nc = Ns, the number of scatterers.

    • When you specify SimulateDirectPath as true, 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 SimulateDirectPath as false, Nc = Ns, the number of scatterers.

    • When you specify SimulateDirectPath as true, 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 SimulateDirectPath as false, Nc = Ns, the number of scatterers.

    • When you specify SimulateDirectPath as true, 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 SimulateDirectPath as false, Nc = Ns, the number of scatterers.

    • When you specify SimulateDirectPath as true, 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 SimulateDirectPath as false, Nc = Ns, the number of scatterers.

  • When you specify SimulateDirectPath as true, 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)

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

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

expand all

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

expand all

Version History

Introduced in R2017a

expand all