Link
A physical connection between two devices.
obj/link/link.m
On This Page
- About
- Creating a Link
- Key Properties
- Symmetric Forward and Reverse Channels
- Symmetric Forward and Reverse Path Loss
- Setting the Forward and Reverse Channel Models
- Setting the Forward and Reverse Path Loss Models
- Forward and Reverse SNR
- Setting the Forward and Reverse SNR
- Shorthand Methods
- List of Properties
- List of Methods
- Methods Documentation
The link
object is used to represent the physical connection (i.e., propagation) between one device
object and another.
Propagation from one device
to another is modeled by two components, as evidenced by common MIMO formulations:
- a channel matrix
- a large-scale gain
The link
object uses a channel
object—more likely, one of its subclasses—to handle generation of the channel matrix .
The link
object uses a path_loss
object—again, one of its subclasses—to handle generation of the large-scale gain .
In general, it may be the case that the channel and large-scale gain between two devices is not symmetric—or reciprocal—meaning that the link observered in one direction from the first device to the second is not necessarily the link observed from the second device to the first. This can be due to a variety of factors including separate arrays used for transmission and reception or separate bands for uplink and downlink, for example.
To capture this assymetry, the link
object actually contains two links:
- a forward link
- a reverse link
To define these two links, we must also introduce the nomenclature for the two devices connected by a link:
- a “head” device
- a “tail” device
The head of the link is a device with transmit capability—either a transmitter or a transceiver. The tail of the link is a device with receive capability—either a receiver or transceiver.
If both devices only had transmit capability or only had receive capability, a physical link may exist but would be immaterial. This motivates our “head” and “tail” conventions.
The forward link is defined as from the head to the tail and always has some practical meaning given the fact that the head can transmit and the tail can receive.
The reverse link is defined as from the tail to the head but only has a a practical meaning if both the head and the tail are transceivers.
Propagation between two devices is largely characterized by the carrier frequency of the signal propagating from one device to the other. In some cases, the link is “symmetric”—or “reciprocal”—where a signal going from one device to the other sees the same environment as if it had traveled in the reverse fashion. This is common for time-division duplex systems where transmission by two devices takes place on the same frequency resources (with sufficient stationarity) and thus experiences symmetric transmit and receive channels.
Creating a Link
A link
object can be created in the follow fashion
lnk = link.create(head,tail)
where head
is a device
object with transmit capability and tail
is a device
object with receive capability.
Key Properties
A link
object lnk
contains the following important properties, among others.
The head and tail devices are captured by
lnk.head
lnk.tail
The channel
object representing the channel model used on the forward link is
lnk.channel_forward
The channel
object representing the channel model used on the reverse link is
lnk.channel_reverse
The actual channel matrices for the forward and reverse links, respectively, are stored in
lnk.channel_matrix_forward
lnk.channel_matrix_reverse
The path_loss
object representing the path loss model used on the forward link is
lnk.path_loss_forward
The path_loss
object representing the path loss model used on the reverse link is
lnk.path_loss_reverse
The large-scale gain on the forward link—which is a product of lnk.path_loss_forward
—is
lnk.large_scale_gain_foward
and likewise the large-scale gain on the reverse link is
lnk.large_scale_gain_reverse
The distance of the link in meters—the separation of the head and tail devices—is critical to most path loss models and is stored in
lnk.distance
and is automatically calculated based on the locations of the head and tail devices.
Symmetric Forward and Reverse Channels
Sometimes it is the case that the forward and reverse channels should be symmetric, meaning reverse channel matrix is equal to the Hermitian of the forward channel matrix.
To achieve this, simply use
lnk.set_channel_symmetric(true)
which will be reflected in the property
lnk.channel_symmetric
Note that this is only possible when the transmit and receive arrays at the head are equal in size and likewise at the tail (and the head and tail are both transceivers). This is often the case in practical transceivers since the same antennas are used for transmission and reception.
This will ensure that lnk.channel_matrix_forward
is always the Hermitian of lnk.channel_matrix_reverse
.
Symmetric Forward and Reverse Path Loss
Sometimes it is the case that the forward and reverse path losses should be symmetric, meaning reverse path loss (and thus the reverse large-scale gain) is equal to that of the forward link.
To achieve this, simply use
lnk.set_path_loss_symmetric(true)
which will be reflected in the property
lnk.path_loss_symmetric
This will ensure that lnk.large_scale_gain_forward
is always equal to lnk.large_scale_gain_reverse
.
Setting the Forward and Reverse Channel Models
To set the channel model used on the forward and reverse links of a link
object lnk
, use
lnk.set_channel(chan_fwd,chan_rev)
where chan_fwd
and chan_rev
are channel
objects to use on the forward and reverse links, respectively. Note that chan_fwd
and chan_rev
can be different channel models if desired.
To set the forward and reverse links to use the same channel model—but not necessarily the same realizations—a simpler method is
lnk.set_channel(chan)
where chan
is of course a channel
object.
Note that, in all cases, the channel
objects that are passed to the link
are deep copied before using them, meaning the same chan
, chan_fwd
, and chan_rev
can be used when setting multiple links if desired.
Also, note that the transmit and receive arrays of the head and tail devices are automatically used to set up the forward and reverse channel
objects.
Setting the Forward and Reverse Path Loss Models
To set the path loss model used on the forward and reverse links of a link
object lnk
, use
lnk.set_channel(path_fwd,path_rev)
where path_fwd
and path_rev
are path_loss
objects to use on the forward and reverse links, respectively. Note that path_fwd
and path_rev
can be different path loss models if desired.
To set the forward and reverse links to use the same path loss model—but not necessarily the same realizations—a simpler method is
lnk.set_path_loss(path)
where path
is of course a path_loss
object.
Note that, in all cases, the path_loss
objects that are passed to the link
are deep copied before using them, meaning the same path
, path_fwd
, and path_rev
can be used when setting multiple links if desired.
Forward and Reverse SNR
A link
object lnk
also has properties
lnk.snr_forward
lnk.snr_reverse
which are “large-scale” signal-to-noise ratios (SNRs) defined as
where and are the transmit energy per symbol at the head and tail devices, respectively; and are the forward and reverse large-scale gains, respectively; and and are the noise energy per symbol at the receiver of the head and tail devices, respectively.
Note that the reverse link SNR is only applicable when the head and tail devices are both transceivers.
Setting the Forward and Reverse SNR
It is common in MIMO research to evaluate performance for various large-scale SNR values.
Rather than force the user to find a triplet of transmit power, distance/path loss, and noise power to achieve a desired SNR, the user can force the SNR on a link to be a desired value using
lnk.set_snr(snr_fwd,snr_rev,unit)
where snr_fwd
and snr_rev
are large-scale SNR values and unit
is an optional string to specify the units of snr_fwd
and snr_rev
. If snr_rev = []
, then snr_fwd
will be set on the forward and reverse links.
For example, to set the large-scale SNR to 10 dB on the forward and reverse links, one would use
lnk.set_snr(10,[],'dB')
The set_snr
function adjusts the large-scale gain to be achieve a desired based on the transmit energy per symbol and noise energy per symbol. Thus, to use this method, it is essential that the transmit energy per symbol and noise energy per symbol be set as desired and that the path loss not overwrite the newly set large-scale gain.
List of Properties
The link
object contains the following properties:
link.name
link.head
link.tail
link.channel_symmetric
link.channel_forward
link.channel_reverse
link.channel_matrix_forward
link.channel_matrix_reverse
link.large_scale_gain_forward
link.large_scale_gain_reverse
link.path_loss_forward
link.path_loss_reverse
link.path_loss_symmetric
link.snr_forward
link.snr_reverse
link.distance
link.line_style
link.color
List of Methods
The link
object contains the following methods:
link.compute_channel_state_information
Constrcuts a struct containing channel state information for the forward and reverse links.link.compute_channel_state_information_forward
Constrcuts a struct containing channel state information for the forward link.link.compute_channel_state_information_reverse
Constrcuts a struct containing channel state information for the reverse link.link.compute_covariance_forward
Computes the covariance of the received symbols at the tail device from the head device. Also returns the covariance of received noise.link.compute_covariance_reverse
Computes the covariance of the received symbols at the head device from the tail device. Also returns the covariance of received noise.link.compute_link_budget
Returns a struct of values used for a link budget, in log-scale (e.g., dB, dBm), of the forward link and reverse link.link.compute_link_budget_forward
Returns a struct of values used for a link budget, in log-scale (e.g., dB, dBm), of the forward link.link.compute_link_budget_reverse
Returns a struct of values used for a link budget, in log-scale (e.g., dB, dBm), of the reverse link.link.compute_received_signal
Computes the received signal on the forward link and reverse link.link.compute_received_signal_forward
Computes the received signal at the tail device from the head device.link.compute_received_signal_reverse
Computes the received signal at the head device from the tail device.link.configure_receiver
Configures each device’s receiver according to the current/specified receive strategy, incorporating channel state information as applicable.link.configure_transmitter
Configures each device’s transmitter according to the current/specified transmit strategy, incorporating channel state information as applicable.link.create
Creates a link between two devices: a head device (which has transmit capability) and a tail device (which has receive capability).link.initialize
Executes intialization steps to set up a link.link.isbidirectional
Returns a boolean indicating if the link is bidirectional (i.e., if the head device has receive capability and the tail device has transmit capability).link.link
Creates an instance of a link object.link.realization
Invokes a complete realization of the link.link.realization_channel
Invokes a channel realization on the forward and reverse links.link.realization_channel_forward
Invokes a realization of the forward channel and sets the forward channel matrix.link.realization_channel_reverse
Invokes a realization of the reverse channel and sets the reverse channel matrix. If the channel is set to symmetric, the reverse channel will be set to the conjugate transpose of the current forward channel matrix instead of invoking a realization of the reverse channel. Therefore, a forward channel realization should be invoked before a reverse channel realization if the channel is symmetric.link.realization_path_loss
Invokes a realization fo the forward and reverse path loss.link.realization_path_loss_forward
Invokes a realization of the path loss model on the forward link.link.realization_path_loss_reverse
Invokes a realization of the path loss model on the reverse link. If the link is set to have symmetric path loss, the current forward path loss is used.link.report_mutual_information_forward
Reports the Gaussian mutual information achieved between the head and tail devices based on the current link realization and transmit-receive configurations. Returns the mutual information in bps/Hz. Discards any residual imaginary component.link.report_mutual_information_reverse
Reports the Gaussian mutual information achieved between the tail and head devices based on the current link realization and transmit-receive configurations. Returns the mutual information in bps/Hz. Discards any residual imaginary component.link.report_symbol_estimation_error_forward
Returns the squared-error in the estimated receive symbol at the tail compared to the transmit symbol at the head.link.report_symbol_estimation_error_reverse
Returns the squared-error in the estimated receive symbol at the head compared to the transmit symbol at the tail.link.set_arrays
Sets the transmit and receive arrays at the head and tail devices.link.set_carrier_frequency
Sets the carrier frequency of the link. Also sets the carrier frequency of the head and tail devices.link.set_channel
Sets the channel used on the forward and reverse channels.link.set_channel_forward
Sets the channel used on the forward link.link.set_channel_matrices
Sets the forward and reverse channel matrices.link.set_channel_matrix_forward
Sets the channel matrix of the forward link.link.set_channel_matrix_reverse
Sets the channel matrix of the reverse link.link.set_channel_reverse
Sets the channel used on the reverse link.link.set_channel_symmetric
Sets the symmetry of the forward and reverse channels. Note that this is only possible if the transmit array and receive array at the head are equal in size and likewise at the tail.link.set_color
Sets the color used when plotting the link.link.set_distance
Sets the distance of the link (in meters).link.set_duplexing
Sets the duplexing method at the head and tail devices.link.set_head
Sets the head device of the link.link.set_large_scale_gain
Sets the large-scale gain of the forward and reverse links to the same value.link.set_large_scale_gain_forward
Sets the large-scale gain of the forward link.link.set_large_scale_gain_reverse
Sets the large-scale gain of the reverse link.link.set_line_style
Sets the line style used when plotting the link.link.set_marker
Sets the marker used by the head and tail devices.link.set_name
Sets the name of the link.link.set_noise_power_per_Hz
Sets the noise power per Hz at the receiver of the head and tail devices.link.set_num_rf_chains
Sets the number of transmit and receive RF chains at the head and tail devices.link.set_num_streams
Sets the number of streams at the head and tail devices.link.set_path_loss
Sets the path loss model used on the link.link.set_path_loss_forward
Sets the path loss model used on the forward link.link.set_path_loss_reverse
Sets the path loss model used on the reverse link.link.set_path_loss_symmetric
Sets the symmetry of the forward and reverse path loss.link.set_propagation_velocity
Sets the propagation velocity of the link. Also sets the propagation velocity of the head and tail devices.link.set_receive_strategy
Sets the receive strategy to use at the head and tail devices.link.set_snr
Sets the SNR of the forward and reverse links.link.set_snr_forward
Sets the SNR of the forward link.link.set_snr_reverse
Sets the SNR of the reverse link.link.set_symbol_bandwidth
Sets the symbol bandwidth at the head and tail devices.link.set_tail
Sets the tail device of the link.link.set_transmit_power
Sets the transmit power at the transmitter of the head and tail devices.link.set_transmit_strategy
Sets the transmit strategy to use at the head and tail devices.link.set_transmit_symbol
Sets the transmit symbol at the head and tail devices.link.set_transmit_symbol_covariance
Sets the transmit covariance of the device.link.show_2d
Displays the link in 2-D.link.show_3d
Displays the link in 3-D.
compute_channel_state_information()
Constrcuts a struct containing channel state information for the forward and reverse links.
- Usage:
[csi_forward,csi_reverse] = compute_channel_state_information()
- Return Values:
csi_forward
— a struct containing CSI values for the forward linkcsi_reverse
— a struct containing CSI values for the reverse link
compute_channel_state_information_forward()
Constrcuts a struct containing channel state information for the forward link.
- Usage:
csi = compute_channel_state_information_forward()
- Return Values:
csi
— a struct containing CSI values
compute_channel_state_information_reverse()
Constrcuts a struct containing channel state information for the reverse link.
- Usage:
csi = compute_channel_state_information_reverse()
- Return Values:
csi
— a struct containing CSI values
compute_covariance_forward()
Computes the covariance of the received symbols at the tail device from the head device. Also returns the covariance of received noise.
- Usage:
[Ry,Rn] = compute_covariance_forward()
- Return Values:
Ry
— the received desired symbols covarianceRn
— the received noise covariance
compute_covariance_reverse()
Computes the covariance of the received symbols at the head device from the tail device. Also returns the covariance of received noise.
- Usage:
[Ry,Rn] = compute_covariance_reverse()
- Return Values:
Ry
— the received desired symbols covarianceRn
— the received noise covariance
compute_link_budget()
Returns a struct of values used for a link budget, in log-scale (e.g., dB, dBm), of the forward link and reverse link.
- Usage:
[budget_fwd, budget_rev] = GET_LINK_BUDGET()
- Return Values:
budget_fwd
— a struct containing link budget quantities in log-scale for the forward linkbudget_rev
— a struct containing link budget quantities in log-scale for the forward link
compute_link_budget_forward()
Returns a struct of values used for a link budget, in log-scale (e.g., dB, dBm), of the forward link.
- Usage:
budget = GET_LINK_BUDGET_FORWARD()
- Return Values:
budget
— a struct containing link budget quantities in log-scale
compute_link_budget_reverse()
Returns a struct of values used for a link budget, in log-scale (e.g., dB, dBm), of the reverse link.
- Usage:
budget = compute_link_budget_reverse()
- Return Values:
budget
— a struct containing link budget quantities in log-scale
compute_received_signal()
Computes the received signal on the forward link and reverse link.
- Usage:
compute_received_signal()
compute_received_signal_forward()
Computes the received signal at the tail device from the head device.
- Usage:
[z,y,n] = compute_received_signal_forward()
- Return Values:
z
— the desired signal plus noisey
— the desired signal vectorn
— the noise vector
compute_received_signal_reverse()
Computes the received signal at the head device from the tail device.
- Usage:
[z,y,n] = compute_received_signal_reverse()
- Return Values:
z
— the desired signal plus noisey
— the desired signal vectorn
— the noise vector
configure_receiver(strategy)
Configures each device’s receiver according to the current/specified receive strategy, incorporating channel state information as applicable.
- Usage:
configure_receiver()
configure_receiver(strategy)
- Input Arguments:
strategy
— (optional) receive strategy to use; if not passed, each device’s current receive strategy will be used
configure_transmitter(strategy)
Configures each device’s transmitter according to the current/specified transmit strategy, incorporating channel state information as applicable.
- Usage:
configure_transmitter()
configure_transmitter(strategy)
- Input Arguments:
strategy
— (optional) transmit strategy to use; if not passed, each device’s current transmit strategy will be used
create(head,tail)
Creates a link between two devices: a head device (which has transmit capability) and a tail device (which has receive capability).
- Usage:
obj = link.create(head,tail)
- Input Arguments:
head
— a device with transmit capabilitytail
— a device with receive capability- Return Values:
obj
— a link object
initialize()
Executes intialization steps to set up a link.
- Usage:
initialize()
isbidirectional()
Returns a boolean indicating if the link is bidirectional (i.e., if the head device has receive capability and the tail device has transmit capability).
- Usage:
out = isbidirectional()
- Return Values:
out
— a boolean indicating if the link is bidirectional
link(head,tail)
Creates an instance of a link object.
- Usage:
obj = link(head,tail)
- Input Arguments:
head
— a device object at the head of the link; device must be a transmitter or transceivertail
— a device object at the tail of the link; device must be a receiver or transceiver- Return Values:
obj
— a link object
realization()
Invokes a complete realization of the link.
- Usage:
realization()
- Notes:
- Invokes realizations of the foward and reverse path loss and forward and reverse channels.
realization_channel()
Invokes a channel realization on the forward and reverse links.
- Usage:
[H_fwd,H_rev] = realization_channel()
- Return Values:
H_fwd
— the forward channel matrix realizationH_rev
— the reverse channel matrix realization
realization_channel_forward()
Invokes a realization of the forward channel and sets the forward channel matrix.
- Usage:
H = realization_channel_forward()
- Return Values:
H
— a channel matrix for the forward channel
realization_channel_reverse()
Invokes a realization of the reverse channel and sets the reverse channel matrix. If the channel is set to symmetric, the reverse channel will be set to the conjugate transpose of the current forward channel matrix instead of invoking a realization of the reverse channel. Therefore, a forward channel realization should be invoked before a reverse channel realization if the channel is symmetric.
- Usage:
H = realization_channel_reverse()
- Return Values:
H
— a channel matrix for the reverse channel
realization_path_loss()
Invokes a realization fo the forward and reverse path loss.
- Usage:
[G_forward,G_reverse] = realization_path_loss()
- Return Values:
G_forward
— the resulting forward large-scale gainG_reverse
— the resulting reverse large-scale gain
realization_path_loss_forward()
Invokes a realization of the path loss model on the forward link.
- Usage:
G = realization_path_loss_forward()
- Return Values:
G
— the large-scale gain following the forward path loss realization
realization_path_loss_reverse()
Invokes a realization of the path loss model on the reverse link. If the link is set to have symmetric path loss, the current forward path loss is used.
- Usage:
G = realization_path_loss_reverse()
- Return Values:
G
— the large-scale gain following the reverse path loss realization
report_mutual_information_forward()
Reports the Gaussian mutual information achieved between the head and tail devices based on the current link realization and transmit-receive configurations. Returns the mutual information in bps/Hz. Discards any residual imaginary component.
- Usage:
mi = report_mutual_information_forward()
- Return Values:
mi
— the mutual information in bps/Hz- Notes:
- Will warn the user if a significant imaginary portion exists when computing the mutual information. Ultimately discards it though.
report_mutual_information_reverse()
Reports the Gaussian mutual information achieved between the tail and head devices based on the current link realization and transmit-receive configurations. Returns the mutual information in bps/Hz. Discards any residual imaginary component.
- Usage:
mi = report_mutual_information_reverse()
- Return Values:
mi
— the mutual information in bps/Hz- Notes:
- Will warn the user if a significant imaginary portion exists when computing the mutual information. Ultimately discards it though.
report_symbol_estimation_error_forward()
Returns the squared-error in the estimated receive symbol at the tail compared to the transmit symbol at the head.
- Usage:
[mse,mse_dB] = report_symbol_estimation_error_forward()
- Return Values:
err
— the squared error of the received symbols versus the transmitted symbolsnerr
— err normalized to the transmit symbol power
report_symbol_estimation_error_reverse()
Returns the squared-error in the estimated receive symbol at the head compared to the transmit symbol at the tail.
- Usage:
[mse,mse_dB] = report_symbol_estimation_error_reverse()
- Return Values:
err
— the squared error of the received symbols versus the transmitted symbolsnerr
— err normalized to the transmit symbol power
set_arrays(transmit_array,receive_array)
Sets the transmit and receive arrays at the head and tail devices.
- Usage:
set_arrays(transmit_array,receive_array)
- Input Arguments:
transmit_array
— array object to use at the transmitter of the head and tail devicesreceive_array
— array object to use at the receiver of the head and tail devices
set_carrier_frequency(fc)
Sets the carrier frequency of the link. Also sets the carrier frequency of the head and tail devices.
- Usage:
set_carrier_frequency(fc)
- Input Arguments:
fc
— carrier frequency (Hz)- Notes:
- Also updates carrier wavelength.
set_channel(channel_forward,channel_reverse)
Sets the channel used on the forward and reverse channels.
- Usage:
set_channel(channel_forward)
set_channel(channel_forward,channel_reverse)
- Input Arguments:
channel_forward
— a channel object used on the forward linkchannel_reverse
— (optional) a channel object used on the reverse link; if not provided, the reverse channel will use the same channel object as the forward channel (i.e., channel_reverse = channel_forward)
set_channel_forward(channel)
Sets the channel used on the forward link.
- Usage:
set_channel_forward(channel)
- Input Arguments:
channel
— a channel object
set_channel_matrices(H_forward,H_forward)
Sets the forward and reverse channel matrices.
- Usage:
set_channel_matrices()
set_channel_matrices(H_forward)
set_channel_matrices(H_forward,H_reverse)
- Input Arguments:
H_forward
— (optional) forward channel matrixH_forward
— (optional) reverse channel matrix
set_channel_matrix_forward(H)
Sets the channel matrix of the forward link.
- Usage:
set_channel_matrix_forward()
set_channel_matrix_forward(H)
- Input Arguments:
H
— (optional) a channel matrix; if not passed, the forward channel’s channel matrix will be used
set_channel_matrix_reverse(H)
Sets the channel matrix of the reverse link.
- Usage:
set_channel_matrix_reverse()
set_channel_matrix_reverse(H)
- Input Arguments:
H
— (optional) a channel matrix; if not passed, the reverse channel’s channel matrix will be used (if not symmetric); else the forward channel’s channel matrix will be used
set_channel_reverse(channel)
Sets the channel used on the reverse link.
- Usage:
set_channel_reverse(channel)
- Input Arguments:
channel
— a channel object
set_channel_symmetric(symmetric)
Sets the symmetry of the forward and reverse channels. Note that this is only possible if the transmit array and receive array at the head are equal in size and likewise at the tail.
- Usage:
set_channel_symmetric(symmetric)
- Input Arguments:
symmetric
— a boolean indicating if the forward and reverse channels are symmetric; if so, then the reverse channel matrix is the conjugate-transpose of the the forward channel matrix
set_color(color)
Sets the color used when plotting the link.
- Usage:
set_color(color)
- Input Arguments:
color
— an RGB triplet normalized to [0,1] or a MATLAB color code (e.g., ‘k’,’b’,’r’).
set_distance(d)
Sets the distance of the link (in meters).
- Usage:
set_distance()
set_distance(d)
- Input Arguments:
d
— (optional) distance of the link (in meters); if not passed, the head and tail devices’ coordinates will be used to calculate the distance of the link
set_duplexing(duplex)
Sets the duplexing method at the head and tail devices.
- Usage:
set_duplexing(duplex)
- Input Arguments:
duplex
— a string specifying the duplexing method to use
set_head(head)
Sets the head device of the link.
- Usage:
set_head(head)
- Input Arguments:
head
— a device of type ‘transmitter’ or ‘transceiver’
set_large_scale_gain(G_forward,G_reverse)
Sets the large-scale gain of the forward and reverse links to the same value.
- Usage:
set_large_scale_gain(G_forward)
set_large_scale_gain(G_forward,G_reverse)
- Input Arguments:
G_forward
— large-scale gain of the forward linkG_reverse
— (optional) large-scale gain of the reverse link; if not passed, G_forward will be used as G_reverse
set_large_scale_gain_forward(G)
Sets the large-scale gain of the forward link.
- Usage:
set_large_scale_gain_forward(G)
- Input Arguments:
G
— large-scale amplitude gain (G^2 is power gain)
set_large_scale_gain_reverse(G)
Sets the large-scale gain of the reverse link.
- Usage:
set_large_scale_gain_reverse(G)
- Input Arguments:
G
— large-scale amplitude gain (G^2 is power gain)
set_line_style(line_style,(dashed), ')
Sets the line style used when plotting the link.
- Usage:
set_line_style(line_style)
- Input Arguments:
line_style
— a MATLAB line style; either ‘-‘ (solid), ‘–’(dashed), '
— ‘ (dotted), or ‘-.’ (dash-dotted)
set_marker(marker_head,marker_tail)
Sets the marker used by the head and tail devices.
- Usage:
set_marker(marker_head)
set_marker(marker_head,marker_tail)
- Input Arguments:
marker_head
— a marker to use at the head devicemarker_tail
— (optional) a marker to use at the tail device; if not passed, the marker specified for the head will be used
set_name(name)
Sets the name of the link.
- Usage:
set_name()
set_name(name)
- Input Arguments:
name
— (optional) a string; if not passed, a name is created
set_noise_power_per_Hz(noise_psd,unit)
Sets the noise power per Hz at the receiver of the head and tail devices.
- Usage:
set_noise_power_per_Hz(noise_psd)
set_noise_power_per_Hz(noise_psd,unit)
- Input Arguments:
noise_psd
— the noise power spectral densityunit
— (optional) a string specifying the units of noise_psd (e.g., ‘dBm_Hz’ or ‘watts_Hz’); if not passed, the default will be used- Notes:
- Also updates the SNR of the link.
set_num_rf_chains(Lt,Lr)
Sets the number of transmit and receive RF chains at the head and tail devices.
- Usage:
set_num_rf_chains(Lt,Lr)
- Input Arguments:
Lt
— number of transmit RF chains at the head and tail devicesLr
— number of receive RF chains at the head and tail devices
set_num_streams(num_streams)
Sets the number of streams at the head and tail devices.
- Usage:
set_num_streams(num_streams)
- Input Arguments:
num_streams
— number of streams to multiplex at the transmitter and receiver of the head and tail devices
set_path_loss(path_loss_forward,path_loss_reverse)
Sets the path loss model used on the link.
- Usage:
set_path_loss(path_loss_forward)
set_path_loss(path_loss_forward,path_loss_reverse)
- Input Arguments:
path_loss_forward
— a path loss object used on the forward linkpath_loss_reverse
— (optional) a path loss object used on the reverse link; if not provided, the reverse path loss will use the same path loss object as the forward one (i.e., path_loss_reverse = path_loss_forward)
set_path_loss_forward(path_loss)
Sets the path loss model used on the forward link.
- Usage:
set_path_loss_forward(path_loss)
set_path_loss_forward(path_loss,copy)
- Input Arguments:
path_loss
— a path loss object
set_path_loss_reverse(path_loss)
Sets the path loss model used on the reverse link.
- Usage:
set_path_loss_reverse(path_loss)
- Input Arguments:
path_loss
— a path loss object
set_path_loss_symmetric(symmetric)
Sets the symmetry of the forward and reverse path loss.
- Usage:
set_path_loss_symmetric(symmetric)
- Input Arguments:
symmetric
— a boolean indicating if the forward and reverse path loss are symmetric; if so, then the reverse large-scale gain will always be equal to the forward large-scale gain
set_propagation_velocity(vel)
Sets the propagation velocity of the link. Also sets the propagation velocity of the head and tail devices.
- Usage:
set_propagation_velocity(vel)
- Input Arguments:
vel
— propagation velocity (meters/sec)
set_receive_strategy(strategy)
Sets the receive strategy to use at the head and tail devices.
- Usage:
set_receive_strategy(strategy)
- Input Arguments:
strategy
— a string specifying the receive strategy
set_snr(snr_forward,snr_reverse)
Sets the SNR of the forward and reverse links.
- Usage:
set_snr()
set_snr(snr_forward,snr_reverse)
set_snr(snr_forward,snr_reverse,unit)
- Input Arguments:
snr_forward
— (optional) the large-scale SNR of the forward linksnr_reverse
— (optional) the large-scale SNR of the reverse link; if not passed, the SNR of the forward link is used
set_snr_forward(snr,unit)
Sets the SNR of the forward link.
- Usage:
set_snr_forward()
set_snr_forward(snr)
set_snr_forward(snr,unit)
- Input Arguments:
snr
— (optional) the large-scale SNR of the forward link; if passed, the large-scale gain of the forward link is adjusted accordingly; if not passed, the SNR is computed based on the current large-scale gainunit
— (optional) a string specifying the unit of snr
set_snr_reverse(snr,unit)
Sets the SNR of the reverse link.
- Usage:
set_snr_reverse()
set_snr_reverse(snr)
set_snr_reverse(snr,unit)
- Input Arguments:
snr
— (optional) the large-scale SNR of the reverse link; if passed, the large-scale gain of the reverse link is adjusted accordingly; if not passed, the SNR is computed based on the current large-scale gainunit
— (optional) a string specifying the unit of snr
set_symbol_bandwidth(B)
Sets the symbol bandwidth at the head and tail devices.
- Usage:
set_symbol_bandwidth(B)
- Input Arguments:
B
— the symbol bandwidth (in Hertz) at the transmitter and receiver of the head and tail devices- Notes:
- Also updates the SNR of the link.
set_tail(head)
Sets the tail device of the link.
- Usage:
set_tail(tail)
- Input Arguments:
head
— a device of type ‘receiver’ or ‘transceiver’
set_transmit_power(P,unit)
Sets the transmit power at the transmitter of the head and tail devices.
- Usage:
set_transmit_power(P)
set_transmit_power(P,unit)
- Input Arguments:
P
— transmit power (e.g., in watts or dBm)unit
— (optional) a string specifying the units of P (e.g., ‘dBm’); if not passed, the default is used.- Notes:
- Also updates the SNR of the link.
set_transmit_strategy(strategy)
Sets the transmit strategy to use at the head and tail devices.
- Usage:
set_transmit_strategy(strategy)
- Input Arguments:
strategy
— a string specifying the transmit strategy
set_transmit_symbol(s)
Sets the transmit symbol at the head and tail devices.
- Usage:
set_transmit_symbol(s)
- Input Arguments:
s
— transmit symbol vector
set_transmit_symbol_covariance(Rs)
Sets the transmit covariance of the device.
- Usage:
set_transmit_symbol_covariance(Rs)
- Input Arguments:
Rs
— a covariance matrix
show_2d(fignum)
Displays the link in 2-D.
- Usage:
show_2d()
show_2d(fignum)
- Input Arguments:
fignum
— (optional) a figure number; if not passed, a new figure will be created- Return Values:
fig
— the resulting a figure handle
show_3d(fignum)
Displays the link in 3-D.
- Usage:
show_3d()
show_3d(fignum)
- Input Arguments:
fignum
— (optional) a figure number; if not passed, a new figure will be created- Return Values:
fig
— the resulting a figure handle