scatteringchanmtx
Scattering channel matrix
Syntax
Description
returns
the channel matrix, chmat
= scatteringchanmtx(txarraypos
,rxarraypos
,numscat
)chmat
, for a MIMO channel
consisting of a transmitting array, a receiver array, and multiple
scatterers. The transmitting array is located at txarraypos
and
the receiving array at rxarraypos
. numscat
is
the number of point scatterers.
The function generates numscat
random
transmission directions and numscat
random receiving
directions. The channel matrix describes multipath propagation through
the numscat
paths. By assumption, all paths arrive
at the receiving array simultaneously implying that the channel is
frequency flat. Flat frequency means that the spectrum of the signal
is not changed. Path gains are derived from a zero-mean, unit-variance,
complex-valued normal distribution.
also specifies the angular range, chmat
= scatteringchanmtx(txarraypos
,rxarraypos
,numscat
,angrange
)angrange
, for transmitting
and receiving angles.
also specifies transmitting angles, chmat
= scatteringchanmtx(txarraypos
,rxarraypos
,txang
,rxang
,G
)txang
, receiving angles,
rxang
, and path gains, G
.
Examples
Compute Channel Matrix for Random Signal Paths
Compute the channel matrix for a 13-element transmitting array and a 15-element receiving array. Assume that there are 17 randomly located scatterers. The arrays are uniform linear arrays with 0.45-wavelength spacing. The receiving array is 300 wavelengths away from the transmitting array. Use the channel matrix to compute a propagated signal from the transmitting array to the receiving array.
Specify the arrays. Element spacing is in units of wavelength.
numtx = 13; sp = 0.45; txpos = (0:numtx-1)*sp; numrx = 15; rxpos = 300 + (0:numrx-1)*sp;
Specify the number of scatterers and create the channel matrix.
numscat = 17; chmat = scatteringchanmtx(txpos,rxpos,numscat);
Create a signal consisting of zeros and ones. Then, propagate the signal from the transmitter to receiver.
x = randi(2,[100 numtx])-1; y = x*chmat;
Compute Channel Matrix for Constrained Random Signal Paths
Compute the channel matrix for a 4-by-4 transmitting URA array and a 5-by-5 receiving URA array. Assume that 17 scatterers are randomly located within a specified angular range. The element spacing for both arrays is one-half wavelength. The receive array is 500 wavelengths away from the transmitting array along the x-axis. Use the channel matrix to compute a propagated signal from the transmitting array to the receiving array. Constrain the angular span for the transmitting and receiving directions.
Specify the 4-by-4 transmitting array. Element spacing is in units of wavelength.
Nt = 4; sp = 0.5; ygridtx = (0:Nt-1)*sp - (Nt-1)/2*sp; zgridtx = (0:Nt-1)*sp - (Nt-1)/2*sp; [ytx,ztx] = meshgrid(ygridtx,zgridtx); txpos = [zeros(1,Nt*Nt);ytx(:).';ztx(:).'];
Specify the 5-by-5 receiving array. Element spacing is in units of wavelength.
Nr = 5; sp = 0.5; ygridrx = (0:Nr-1)*sp - (Nr-1)/2*sp; zgridrx = (0:Nr-1)*sp - (Nr-1)/2*sp; [yrx,zrx] = meshgrid(ygridrx,zgridrx); rxpos = [500*ones(1,Nr*Nr);yrx(:).';zrx(:).'];
Set the angular limits for transmitting and receiving.
The azimuth angle limits for the transmitter are −45° to +45°.
The azimuth angle limits for the receiver are −75° to +50°.
The elevation angle limits for the transmitter are −12° to +12°.
The elevation angle limits for the receiver are −30° to +30°.
angrange = [-45 45 -75 50; -12 12 -30 30];
Specify the number of scatterers and create the channel matrix.
numscat = 6; chmat = scatteringchanmtx(txpos,rxpos,numscat,angrange);
Create a 100-sample signal consisting of zeros and ones. Then, propagate the signal from the transmitting array to the receiving array.
x = randi(2,[100 Nt*Nt])-1; y = x*chmat;
Compute Channel Matrix for Specified Signal Paths
Compute the channel matrix for a 4-by-4 transmitting URA array and a 5-by-5 receiving URA array. Assume there are 3 scatterers with known directions. The element spacings for both arrays is one-half wavelength. The receive array is 500 wavelengths away from the transmitting array along the x-axis. Use the channel matrix to compute a propagated signal from the transmitting array to the receiving array. Specify the transmitting and receiving directions. The number of directions determines the number of scatterers.
Specify the 4-by-4 transmitting array. Element spacing is in units of wavelength.
Nt = 4; sp = 0.5; ygridtx = (0:Nt-1)*sp - (Nt-1)/2*sp; zgridtx = (0:Nt-1)*sp - (Nt-1)/2*sp; [ytx,ztx] = meshgrid(ygridtx,zgridtx); txpos = [zeros(1,Nt*Nt);ytx(:).';ztx(:).'];
Specify the 5-by-5 receiving array. Element spacing is in units of wavelength.
Nr = 5; sp = 0.5; ygridrx = (0:Nr-1)*sp - (Nr-1)/2*sp; zgridrx = (0:Nr-1)*sp - (Nr-1)/2*sp; [yrx,zrx] = meshgrid(ygridrx,zgridrx); rxpos = [500*ones(1,Nr*Nr);yrx(:).';zrx(:).'];
Specify the transmitting and receiving angles and the gains. Then, create the channel matrix.
txang = [20 -10 40; 0 12 -12]; rxang = [70 -5.5 27.2; 4 1 -10]; gains = [1 1+1i 2-3*1i]; chmat = scatteringchanmtx(txpos,rxpos,txang,rxang,gains);
Create a 100-sample signal consisting of zeros and ones. Then, propagate the signal from the transmitting array to the receiving array.
x = randi(2,[100 Nt*Nt])-1; y = x*chmat;
Input Arguments
txarraypos
— Positions of elements in transmitting array
real-valued 1-by-Nt row
vector | real-valued 2-by-Nt
matrix | real-valued 3-by-Nt
matrix
Transmitting array element positions, specified as a real-valued 1-by-Nt row vector, 2-by-Nt matrix, or 3-by-Nt matrix. Nt is the number of elements in the transmitting array.
txarraypos
| Dimensions of Transmitting Array |
---|---|
1-by-Nt row vector | All transmitting array elements lie along the y-axis. The vector specifies the y-coordinates of the array elements. |
2-by-Nt matrix | All transmitting array elements lie in the yz-plane. Each column of the matrix specifies the y and z coordinates of an array element. |
3-by-Nt matrix | The transmitting array elements have arbitrary 3-D coordinates. Each column of the matrix specifies the x, y, and z coordinates of an array element. |
Units are in wavelengths.
Example: [-2.0,-1.0,0.0,1.0,2.0]
Data Types: double
rxarraypos
— Positions of elements in receiving array
real-valued 1-by-Nr row
vector | real-valued 2-by-Nr
matrix | real-valued 3-by-Nr
matrix
Receiving array element positions, specified as a real-valued 1-by-Nr row vector, 2-by-vmatrix, or 3-by-Nr matrix. Nt is the number of elements in the transmitting array.
rxarraypos
| Dimensions of Receiving Array |
---|---|
1-by-Nr row vector | All receiving array elements lie along the y-axis. The vector specifies the y-coordinates of the array elements. |
2-by-Nr matrix | All receiving array elements lie in the yz-plane. Each column of the matrix specifies the y and z coordinates of an array element. |
3-by-Nr matrix | The receiving array elements have arbitrary 3-D coordinates. Each column of the matrix specifies the x, y, and z coordinates of an array element. |
Units are in wavelengths.
Example: [-2.0,-1.0,0.0,1.0,2.0]
Data Types: double
numscat
— Number of scatterers
positive integer
Number of scatters, specified as a positive integer
Example: 7
Data Types: double
angrange
— Angular range of transmission and reception directions
real-valued 1-by-2 row vector | real-valued row 1-by-4 vector | real-valued 2-by-2 matrix | real-valued 2-by-4 matrix
Angular range of transmitting and receiving directions, specified as one of the values in this table.
Size of angrange | Angular range |
---|---|
real-valued 1-by-2 row vector | Specify the same azimuth angle direction span for the transmitting
and receiving arrays by using the minimum and maximum azimuth angles, [az_min
az_max] . The elevation direction span is –90°
to +90°. |
real-valued 1-by-4 row vector | Specify the azimuth angle direction range for the transmitting
and receiving arrays by using [tx_az_min tx_az_max rx_az_min
rx_az_max] . The first two values are the minimum and maximum
of the transmitting array directions. The last two values are the
minimum and maximum of the receiving array directions. The range of
the elevation angles is –90° to +90°. |
real-valued 2-by-2 matrix | Specify the same azimuth and elevation angle direction spans
for the transmitting and receiving arrays by using the minimum and
maximum azimuth and elevation angles, [az_min az_max; el_min
el_max] . |
real-valued 2-by-4 matrix | Specify separate azimuth and elevation angle direction spans
by using [tx_az_min tx_az_max rx_az_min rx_az_max; tx_el_min
tx_el_max rx_el_min rx_el_max] . The first and second columns
form the transmitting array direction span. The last two columns form
the receiving array direction span. |
Units are in degrees.
Example: [-45 45 -30 30; -10 20 -5 30]
Data Types: double
txang
— Transmission path angles
real-valued 1-by-Ns row
vector | real-valued 2-by-Ns
matrix
Transmission path angles, specified as a real-valued
1-by-Ns row vector or a
2-by-Ns matrix.
Ns is the number of scatterers
specified by numscat
.
When
txang
is a vector, each element specifies the azimuth angle of a path. The elevation angle of the path is zero degrees.When
txang
is a matrix, each column specifies the azimuth and elevation angles of a path in the form[az;el]
.
Example: [4 -2; 0 35]
Data Types: double
rxang
— Receiving path angles
real-valued 1-by-Ns row
vector | real-valued 2-by-Ns
matrix
Receiving path angles, specified as a real-valued
1-by-Ns row vector or a
2-by-Ns matrix.
Ns is the number of scatterers
specified by numscat
.
When
rxang
is a vector, each element specifies the azimuth angle of a path. The elevation angle of the path is zero degrees.When
rxang
is a matrix, each column specifies the azimuth and elevation angles of a path in the form[az;el]
.
Example: [4 -2; 0 35]
Data Types: double
G
— Path gains
1-by-Ns complex-valued
row vector
Path gains, specified as a 1-by-Ns complex-valued
row vector. Ns is the number
of scatterers specified by numscat
. The gains
apply to the corresponding paths. Units are dimensionless.
Example: exp(1i*pi/3)
Data Types: double
Complex Number Support: Yes
Output Arguments
chmat
— MIMO channel matrix
Nt-by-Nr complex-valued
matrix
MIMO channel matrix, returned as an Nt-by-Nr complex-valued matrix. Nt is the number of elements in the transmitting array. Nr is the number of elements in the receiving array.
Data Types: double
Complex Number Support: Yes
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.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
Does not support variable-size inputs.
Version History
Introduced in R2017a
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.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)