Network
A network of devices and the links connecting them.
obj/network/network_mfm.m
On This Page
- About
- Creating a Network
- Key Properties
- Setting the Transmitter
- Setting the Receiver
- Setting the Device Location
- Example Setup
- Checking Device Type
- Passthrough Methods
- Shorthand Methods
- List of Properties
- List of Methods
- Methods Documentation
About
An MFM network, as its name suggests, is used to house multiple devices the links connecting them. MFM networks are represented by the network_mfm object.
The network_mfm object simplifies adding devices to the network and provides multiple ways to establish links between the devices.
While a network can be used in various fashions, the most straightforwad is to populate it with source devices and destination devices.
Source devices are device objects with transmit capability that will be transmitting to a destination device object having receive capability.
When multiple source devices are present in the same network, interference manfifests via links connecting source devices to devices other than its intended destination.
For example, there are four devices in the network shown in the figure above. The source device device-1 aims to transmit to the destination device device-2. The source device device-3 aims to transmit to the destination device device-4. Four link objects are produced:
- two desired links shown in solid black—between
device-1anddevice-2and frbetweenomdevice-3anddevice-4 - two interference links shown in dashed red—between
device-1anddevice-4and betweendevice-3anddevice-2
Using knowledge of these sources, destinations, and links, the network handles high-level operations like acquiring and distributing channel state information (CSI) and reporting performance metrics like mutual information/spectral efficiency and received symbol error.
Creating a Network
To create a network in MFM, use
n = network_mfm.create()
where n is an empty network_mfm object.
Key Properties
A network_mfm object n contains a few important properties.
First, as mentioned, each network contains source-destination pairs—pairs of device objects—that indicate which devices (sources) are transmitting to which devices (destinations). The sources are stored in
n.sources
where n.sources is a cell of device objects having transmit capability.
The number of sources in the network is
n.num_sources
Similarly, destination devices are stored in
n.destinations
which is a cell of device objects having receive capability.
The number of destinations in the network—which should equal the number of sources—is stored in
n.num_destinations
The links in the network are stored in
n.links
which is a cell of link objects.
The number of links in the network is stored in
n.num_links
All (unique) devices in the network are stored in
n.devices
which is a cell of device objects.
Adding a Source-Destination Pair
In most cases, devices should be added to a network n using
n.add_source_destination(source,destination)
where source and destination are device objects. Note that pairs of devices are added to the network, not individual devices.
This will automatically populate the properties n.sources and n.destinations with the newly added devices.
This will also automatically include the source and destination devices in the property n.devices if they are not already present.
Removing a Source-Destination Pair
To remove a source-destination pair from a network n, simply use
n.remove_source_destination_pair(source,destination)
where source and destination are device objects to remove. Note that pairs of devices are removed from the network, not individual devices.
To remove all source-destination pairs from a network n, use
n.remove_all_source_destination()
Adding Links to the Network
Recall that sources are transmitting devices and destinations are receiving devices.
The easiest and most practical way to establish links between devices in a network n is to use
n.populate_links_from_source_destination()
which will automatically establish links between all sources and destinations. In other words, for a given source, a link will be created between it and each destination in the network.
With source-destination pairs, populating links between all sources and destinations will yield links.
While a physical link may exist between one source device and another source device, it does not hold much practical value since neither is necessarily receiving. Likewise, a physical link may exist between one destination device and another destination device, but it does not hold much practical value since neither is necessarily transmitting.
Nonetheless, MFM supplies functions to manually create links via
n.add_link(lnk)
where lnk is a link object or via
n.add_links(lnks)
where lnks is a vector of link objects.
Viewing the Network
To view a network n in 3-D use,
n.show_3d()
which will display a figure similar to
Passthrough Methods
Configuring each link and each device in a network can be quite cumbersome, especially as the network grows.
To make configuring objects network-wide more straightforward, we have provided the following passthrough methods for network_mfm objects.
Link Channel Model and Path Loss Model
Links within a network n can be configured one-by-one if desired by accessing the i-th link directly via n.links{i}.
It is often the case that the same channel model and path loss model will be used across all links in a network. In light of this, MFM supplies the functions
n.set_channel(c)
n.set_path_loss(p)
where c is a channel object and p is a path_loss object. This will set each link object in the network to use the same channel model and path loss model, each with their own unique realizations.
Carrier Frequency, Propagation Velocity, and Symbol Bandwidth
To set the carrier frequency, propagation velocity, and symbol bandwidth at all devices and links within a network n, use
n.set_carrier_frequency(fc);
n.set_propagation_velocity(vel);
n.set_symbol_bandwidth(B);
where fc is the carrier frequency (in Hz), vel is the propagation velocity (in m/s), and B is the symbol bandwidth (in Hz).
Transmit Power
To set the transmit power at all devices to a value of P, use
n.set_transmit_power(P,unit)
where unit is a string specifying the units of P (e.g., 'dBm', 'watts').
Noise Power
To set the noise power at all devices to a value of noise_psd, use
n.set_noise_power_per_Hz(noise_psd,unit)
where unit is a string specifying the units of noise_psd (e.g., 'dBm_Hz', 'watts_Hz').
Number of Streams
To set the number of streams at all devices to a value of Ns, use
n.set_num_streams(Ns)
Transmit Symbol
T set the transmit symbol at all devices to a vector s, use
n.set_transmit_symbol(s)
Note that this is only appropriate if all devices are transmitting with the same number of streams.
Invoking a Network Realization
To invoke a realization of the channels on all links in a network n, use
n.realization_channel()
To invoke a realization of the path loss on all links in a network n, use
n.realization_path_loss()
To invoke a realization of all channels and path losses in one line, simply use
n.realization()
Channel State Information
To compute the channel state information for a realization of a network n, use
n.compute_channel_state_information()
To supply each device with this computed channel state information, use
n.supply_channel_state_information()
Configuring Devices to Transmit and Receive
To configure all transmitters in the network to use a particular transmit strategy, use
n.configure_transmitter(strategy)
where strategy is a string specifying which strategy the transmitters should use. This string must be one of the valid transmit strategies that have been defined for the transmitter objects being used in the network. Please refer to documentation on the transmitter object for more information on this.
To configure all receivers in the network to use a particular receive strategy, use
n.configure_receiver(strategy)
where strategy is a string specifying which strategy the receivers should use. This string must be one of the valid receive strategies that have been defined for the receiver objects being used in the network. Please refer to documentation on the receiver object for more information on this.
Received Signals at Each Device
With a realized network and configured transmitters and receivers, the received signals at each device can be computed via
n.compute_received_signals()
Performance Metrics
To evaluate the performance of a network, MFM can compute and report the mutual information and estimation error of the receive symbol versus the transmit symbol for each source-destination pair.
Mutual Information
To report the achieved Gaussian mutual information (spectral efficiency) between a source device and destination device, use
mi = n.report_mutual_information(source,destination)
where source is a source device, destination is a destination device, and mi is the mutual information in bps/Hz.
Symbol Estimation Error
To report the achieved estimation error between the transmit symbol at a source device and the receie symbol destination device, use
[err,nerr] = n.report_symbol_estimation_error(source,destination)
where source is a source device, destination is a destination device, err is the symbol estimation error defined as
and nerr is the symbol estimation error normalized to the transmit symbol energy defined as
List of Properties
The network_mfm object contains the following properties:
network_mfm.namenetwork_mfm.devicesnetwork_mfm.num_devicesnetwork_mfm.linksnetwork_mfm.num_linksnetwork_mfm.sourcesnetwork_mfm.num_sourcesnetwork_mfm.destinationsnetwork_mfm.num_destinationsnetwork_mfm.propagation_velocitynetwork_mfm.carrier_frequencynetwork_mfm.carrier_wavelengthnetwork_mfm.symbol_bandwidthnetwork_mfm.channel_state_information_transmitnetwork_mfm.channel_state_information_receive
List of Methods
The network_mfm object contains the following methods:
network_mfm.add_destinationAdds a destination device to the network.network_mfm.add_deviceAdds a device to the network.network_mfm.add_devicesAdds a vector of devices to the network.network_mfm.add_linkAdds a link to the network.network_mfm.add_linksAdds a vector of links to the network.network_mfm.add_sourceAdds a source device to the network.network_mfm.add_source_destinationAdds a source-destination pair to the network.network_mfm.compute_channel_state_informationComputes the channel state information for each device in the network. For each device, the CSI is collected across all links in which the device is the transmitter (head on the forward link, tail on the reverse link) or receiver (tail on the forward link, head on the reverse link).network_mfm.compute_channel_state_information_receiveComputes the receive channel state information for a device. Specifically, it collects the CSI across all links (forward and reverse) in which the device could be a receiver. This reduces to collecting CSI across forward links where the device is the tail and across reverse links where the device is the head.network_mfm.compute_channel_state_information_transmitComputes the transmit channel state information for a device. Specifically, it collects the CSI across all links (forward and reverse) in which the device could be a transmitter. This reduces to collecting CSI across forward links where the device is the head and across reverse links where the device is the tail.network_mfm.compute_covariance_desiredComputes the covariance of the received symbols at a destination device from its source. Also returns the covariance of received noise.network_mfm.compute_covariance_interferenceComputes the covariance of received interference at a destination device (i.e., the contribution of all interference links).network_mfm.compute_received_signalComputes the signal impinging the receive array at a destination device. This is comprised of all desired and interfering transmitters as well as additive noise.network_mfm.compute_received_signalsComputes the received signal at each destination device in the network.network_mfm.configure_receiverConfigures each destination in the network according to their existing/specified receive strategy.network_mfm.configure_transmitterConfigures each source in the network according to their existing/specified transmit strategy.network_mfm.createCreates a network object.network_mfm.get_device_indexReturns the index of a device within the devices in the network.network_mfm.get_link_indexReturns the index of a link within the links in the network.network_mfm.get_link_index_destinationReturns the indeces of the links in the network that contain a destination device. Also returns whether each of those links is forward or reverse.network_mfm.get_link_index_source_destinationReturns the index of the link with a specific source-destination pair and an indicator for if that link is a forward or reverse link.network_mfm.get_link_index_source_destination_forwardReturns the index of the link whose head and tail are specific source and destination devices, respectively (i.e., which link has head = source and tail = destination).network_mfm.get_link_index_source_destination_reverseReturns the index of the link whose tail and head are specific source and destination devices, respectively (i.e., which link has head = destination and tail = source).network_mfm.initializeExecutes intialization steps to set up a network.network_mfm.network_mfmCreates a network object.network_mfm.populate_devices_from_linksPopulates the devices in the network from the links in the network.network_mfm.populate_links_from_devicesPopulates the links in the network from the devices in the network by linking each pair of devices.network_mfm.populate_links_from_source_destinationPopulates the links in the network from the sources and destinations in the network by linking each pair of devices. Removes all links before populating links.network_mfm.realizationInvokes a realization of the network, including all of the links it contains.network_mfm.remove_all_devicesRemoves all devices from the network.network_mfm.remove_all_linksRemoves all links from the network.network_mfm.remove_all_links_with_deviceRemoves all links having a particular device as its head or tail.network_mfm.remove_all_source_destinationRemoves all source-destination pairs from the network.network_mfm.remove_all_source_destination_with_deviceRemoves all source-destination pairs having a particular device as the source or destination.network_mfm.remove_deviceRemoves a device from the network.network_mfm.remove_linkRemoves a link from the network.network_mfm.remove_source_destinationRemoves a source-destination pair from the network.network_mfm.report_mutual_informationReports the Gaussian mutual information achieved between a source-destination pair based on the current network realization and transmit-receive configurations. Returns the mutual information in bps/Hz. Discards any residual imaginary component.network_mfm.report_symbol_estimation_errorReturns the squared-error in the estimated receive symbol at the destination compared to the transmit symbol at the source.network_mfm.set_arraysSets the transmit and receive arrays used on each link.network_mfm.set_carrier_frequencySets the carrier frequency on each link.network_mfm.set_channelSets the channel model used on each link.network_mfm.set_nameSets the name of the network.network_mfm.set_noise_power_per_HzSets the noise power spectral density on each link.network_mfm.set_num_rf_chainsSets the transmit and receive RF chains used on each link.network_mfm.set_num_streamsSets the number of streams on each link.network_mfm.set_path_lossSets the path loss model used on each link.network_mfm.set_propagation_velocitySets the propagation vecocity on each link.network_mfm.set_snrSets the large-scale SNR on each of the links.network_mfm.set_symbol_bandwidthSets the symbol bandwidth on each link.network_mfm.set_transmit_powerSets the transmit power used on each link.network_mfm.set_transmit_symbolSets the transmit symbol used on each link.network_mfm.set_transmit_symbol_covarianceSets the transmit covariance on each link.network_mfm.show_2dDisplays the network in 2-D.network_mfm.show_3dDisplays the network in 3-D.network_mfm.supply_channel_state_informationSupplies channel state information to each of the sources and destinations in the network.
add_destination(destination)
Adds a destination device to the network.
- Usage:
add_destination(destination)- Input Arguments:
destination— a device object
add_device(device)
Adds a device to the network.
- Usage:
add_device(device)- Input Arguments:
device— a device object
add_devices(devices)
Adds a vector of devices to the network.
- Usage:
add_devices(devices)- Input Arguments:
devices— a vector (or cell) of device objects
add_link(lnk)
Adds a link to the network.
- Usage:
add_link(lnk)- Input Arguments:
lnk— a link object
add_links(links)
Adds a vector of links to the network.
- Usage:
add_links(links)- Input Arguments:
links— a vector of link objects
add_source(source)
Adds a source device to the network.
- Usage:
add_source(source)- Input Arguments:
source— a device object
add_source_destination(source,destination)
Adds a source-destination pair to the network.
- Usage:
add_source_destination(source,destination)- Input Arguments:
source— a device object to be the sourcedestination— a device object to be the destination
compute_channel_state_information()
Computes the channel state information for each device in the network. For each device, the CSI is collected across all links in which the device is the transmitter (head on the forward link, tail on the reverse link) or receiver (tail on the forward link, head on the reverse link).
- Usage:
compute_channel_state_information()
compute_channel_state_information_receive(dev)
Computes the receive channel state information for a device. Specifically, it collects the CSI across all links (forward and reverse) in which the device could be a receiver. This reduces to collecting CSI across forward links where the device is the tail and across reverse links where the device is the head.
- Usage:
csi = compute_channel_state_information_receive(dev)- Input Arguments:
dev— a device object- Return Values:
csi— a struct of channel state information values
compute_channel_state_information_transmit(dev)
Computes the transmit channel state information for a device. Specifically, it collects the CSI across all links (forward and reverse) in which the device could be a transmitter. This reduces to collecting CSI across forward links where the device is the head and across reverse links where the device is the tail.
- Usage:
csi = compute_channel_state_information_transmit(dev)- Input Arguments:
dev— a device object- Return Values:
csi— a struct of channel state information values
compute_covariance_desired(source,destination)
Computes the covariance of the received symbols at a destination device from its source. Also returns the covariance of received noise.
- Usage:
[Ry,Rn] = compute_covariance_desired(source,destination)- Input Arguments:
source— a source devicedestination— a destination device- Return Values:
Ry— the desired signal covarianceRn— the noise covariance
compute_covariance_interference(source,destination)
Computes the covariance of received interference at a destination device (i.e., the contribution of all interference links).
- Usage:
R = compute_covariance_interference(source,destination)- Input Arguments:
source— a source devicedestination— a destination device- Return Values:
R— the covariance matrix of interference- Notes:
- Assumes independence across interferers.
compute_received_signal(destination)
Computes the signal impinging the receive array at a destination device. This is comprised of all desired and interfering transmitters as well as additive noise.
- Usage:
y = compute_received_signal(destination)- Input Arguments:
destination— a device object- Return Values:
y— the vector impinging the receive array at the destination
compute_received_signals()
Computes the received signal at each destination device in the network.
- Usage:
compute_received_signals()
configure_receiver(strategy)
Configures each destination in the network according to their existing/specified receive strategy.
- Usage:
configure_receiver()configure_receiver(strategy)- Input Arguments:
strategy— (optional) a string specifying the receive strategy to use, overwriting existing ones
configure_transmitter(strategy)
Configures each source in the network according to their existing/specified transmit strategy.
- Usage:
configure_transmitter()configure_transmitter(strategy)- Input Arguments:
strategy— (optional) a string specifying the transmit strategy to use, overwriting existing ones
create()
Creates a network object.
- Usage:
obj = network_mfm.create()- Return Values:
obj— an MFM network object
get_device_index(dev)
Returns the index of a device within the devices in the network.
- Usage:
idx = get_device_index(dev)- Input Arguments:
dev— a device object or index of a device- Return Values:
idx— the index of the device
get_link_index(lnk)
Returns the index of a link within the links in the network.
- Usage:
idx = get_link_index(lnk)- Input Arguments:
lnk— a link object or index of a link- Return Values:
idx— the index of the link
get_link_index_destination(destination)
Returns the indeces of the links in the network that contain a destination device. Also returns whether each of those links is forward or reverse.
- Usage:
[idx,fwd_rev] = get_link_index_destination(destination)- Input Arguments:
destination— a destination device- Return Values:
idx— a vector of indeces of links in the networkfwd_rev— a vector of booleans indicating if the forward or reverse link contains the destination device as the receiving side (0 for forward, 1 for reverse)
get_link_index_source_destination(source,destination)
Returns the index of the link with a specific source-destination pair and an indicator for if that link is a forward or reverse link.
- Usage:
[idx,fwd_rev] = get_link_index_source_destination(source,destination)- Input Arguments:
source— a device objectdestination— a device object- Return Values:
idx— the index of the link whose head and tail are the source and destination (or vice versa); returns 0 if not foundfwd_rev— a boolean indicating if the head or tail of the link is the source (0 if head = source, forward; 1 if tail = source, reverse)
get_link_index_source_destination_forward(source,destination)
Returns the index of the link whose head and tail are specific source and destination devices, respectively (i.e., which link has head = source and tail = destination).
- Usage:
idx = get_link_index_source_destination_forward(source,destination)- Input Arguments:
source— a device objectdestination— a device object- Return Values:
idx— the index of the link whose head and tail are the source and destination, respectively; returns 0 if not found
get_link_index_source_destination_reverse(source,destination)
Returns the index of the link whose tail and head are specific source and destination devices, respectively (i.e., which link has head = destination and tail = source).
- Usage:
idx = get_link_index_source_destination_reverse(source,destination)- Input Arguments:
source— a device objectdestination— a device object- Return Values:
idx— the index of the link whose tail and head are the source and destination, respectively; returns 0 if not found
initialize()
Executes intialization steps to set up a network.
- Usage:
initialize()
network_mfm(name)
Creates a network object.
- Usage:
obj = NETWORK()obj = NETWORK(name)- Input Arguments:
name— an optional name for the network- Return Values:
obj— an object representing a network
populate_devices_from_links()
Populates the devices in the network from the links in the network.
- Usage:
populate_devices_from_links()
populate_links_from_devices()
Populates the links in the network from the devices in the network by linking each pair of devices.
- Usage:
populate_links_from_devices()
populate_links_from_source_destination()
Populates the links in the network from the sources and destinations in the network by linking each pair of devices. Removes all links before populating links.
- Usage:
populate_links_from_source_destination()
realization()
Invokes a realization of the network, including all of the links it contains.
- Usage:
realization()
remove_all_devices()
Removes all devices from the network.
- Usage:
remove_all_devices()
remove_all_links()
Removes all links from the network.
- Usage:
remove_all_links()
remove_all_links_with_device(dev)
Removes all links having a particular device as its head or tail.
- Usage:
remove_all_links_with_device(dev)- Input Arguments:
dev— a device object
remove_all_source_destination()
Removes all source-destination pairs from the network.
- Usage:
remove_all_source_destination()
remove_all_source_destination_with_device(dev)
Removes all source-destination pairs having a particular device as the source or destination.
- Usage:
remove_all_source_destination_with_device(dev)- Input Arguments:
dev— a device object
remove_device(idx)
Removes a device from the network.
- Usage:
remove_device()remove_device(idx)- Input Arguments:
idx— optional device index to remove from the network (default is the last device in the network)
remove_link(lnk)
Removes a link from the network.
- Usage:
remove_link()remove_link(lnk)- Input Arguments:
lnk— (optional) link index or object to remove from the network; if not passed, the last link in the network is removed
remove_source_destination(source,destination)
Removes a source-destination pair from the network.
- Usage:
remove_source_destination(source,destination)- Input Arguments:
source— a device objectdestination— a device object
report_mutual_information(source,destination)
Reports the Gaussian mutual information achieved between a source-destination pair based on the current network realization and transmit-receive configurations. Returns the mutual information in bps/Hz. Discards any residual imaginary component.
- Usage:
mi = report_mutual_information(source,destination)- Input Arguments:
source— a source devicedestination— a destination device- 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()
Returns the squared-error in the estimated receive symbol at the destination compared to the transmit symbol at the source.
- Usage:
[err,nerr] = report_symbol_estimation_error(source,destination)- 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 used on each link.
- Usage:
set_arrays(transmit_array,receive_array)- Input Arguments:
transmit_array— array objectreceive_array— array object
set_carrier_frequency(fc)
Sets the carrier frequency on each link.
- Usage:
set_carrier_frequency(fc)- Input Arguments:
fc— carrier frequency in Hertz- Notes:
- Also updates the carrier wavelength
set_channel(channel_object)
Sets the channel model used on each link.
- Usage:
SET_channel(channel_object)- Input Arguments:
channel_object— a channel object
set_name(name)
Sets the name of the network.
- 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 spectral density on each link.
- Usage:
set_noise_power_per_Hz(noise_psd)set_noise_power_per_Hz(noise_psd,unit)- Input Arguments:
noise_psd— noise power spectral densityunit— (optional) a string specifying the unit of noise_psd; if not passed, the default will be used
set_num_rf_chains(Lt,Lr)
Sets the transmit and receive RF chains used on each link.
- Usage:
set_num_rf_chains(Lt)set_num_rf_chains(Lt,Lr)- Input Arguments:
Lt— number of transmit RF chainsLr— (optional) number of receive RF chains; if not passed, the number of transmit RF chains is used
set_num_streams(num_streams)
Sets the number of streams on each link.
- Usage:
set_num_streams(num_streams)- Input Arguments:
num_streams— number of data streams
set_path_loss(path_loss_object)
Sets the path loss model used on each link.
- Usage:
set_path_loss(path_loss_object)- Input Arguments:
path_loss_object— a path loss object
set_propagation_velocity(velocity)
Sets the propagation vecocity on each link.
- Usage:
set_propagation_velocity(velocity)- Input Arguments:
velocity— propagation velocity in meters per second- Notes:
- Also updates the carrier wavelength
set_snr(snr_forward,snr_reverse,unit)
Sets the large-scale SNR on each of the links.
- Usage:
set_snr(snr_forward)set_snr(snr_forward,[],unit)set_snr(snr_forward,snr_reverse,unit)- Input Arguments:
snr_forward— the SNR to use on the forward linkssnr_reverse— (optional) the SNR to use on the reverse links; if not passed, snr_forward is used;unit— (optional) a string specifying the units of snr_forward and snr_reverse (e.g., ‘dB’ or ‘linear’)
set_symbol_bandwidth(B)
Sets the symbol bandwidth on each link.
- Usage:
set_symbol_bandwidth(B)- Input Arguments:
B— symbol bandwidth in Hertz
set_transmit_power(P,unit)
Sets the transmit power used on each link.
- Usage:
set_transmit_power(P)set_transmit_power(P,unit)- Input Arguments:
P— transmit powerunit— (optional) a string specifying the unit of P (e.g., ‘dBm’, ‘watts’); if not passed, the default is used
set_transmit_symbol(s)
Sets the transmit symbol used on each link.
- Usage:
set_transmit_symbol(s)- Input Arguments:
s— a symbol vector
set_transmit_symbol_covariance(Rs)
Sets the transmit covariance on each link.
- Usage:
set_transmit_symbol_covariance(Rs)- Input Arguments:
Rs— a covariance matrix
show_2d(fignum)
Displays the network 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 network 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
supply_channel_state_information()
Supplies channel state information to each of the sources and destinations in the network.
- Usage:
supply_channel_state_information()