Path Loss
A generic path loss model.
obj/path_loss/path_loss.m
Subclasses: Free-Space Path Loss Free-Space Path Loss with Log-Normal Shadowing Two-Slope Path Loss
On This Page
- About
- Creating a Generic Path Loss Object
- Key Properties
- Setting the Carrier Frequency
- Setting the Propagation Velocity
- Setting the Distance
- Example Setup
- Getting the Attenuation
- List of Properties
- List of Methods
- Methods Documentation
About
The path_loss
object represents a generic path loss model. It does not hold any value in representing a particular path loss model but rather acts as the foundation for all other path loss models within MFM.
A path loss model is typically a function of carrier frequency, distance of the path, and other parameters (e.g., path loss exponent). Some path loss models are deterministic while other involve some degree of randomness (e.g., shadowing).
In the context of MIMO formulations, the path_loss
object (and its subclasses) are responsible for realizing the large-scale gain , which is the square root of the inverse of path loss.
Creating a Generic Path Loss Object
While the path_loss
object on its own isn’t all that useful, it can be created via
p = path_loss.create()
As mentioned, more useful channel models are subclasses of the path_loss
object, meaning they will inherit the properties and methods of the path_loss
object. Moreover, the path_loss
object includes some of the key setup functions that most—if not all—other channel objects will use.
Key Properties
The path_loss
object (and its subclasses) contain the following important properties.
The realized path loss of a path_loss
object p
is stored in
p.attenuation
which is a power loss.
The carrier frequency (in Hertz), carrier wavelength (in wavelengths), and propagation velocity (in meters per second) of the channel—more accurately, of the signals we are interested in—are captured by
p.carrier_frequency
p.carrier_wavelength
p.propagation_velocity
While not all channel models require knowledge of these three properties, several path loss models do and thus, for simplicity, MFM includes them in the generic path_loss
object.
The distance of the path (in meters) is stored in
p.distance
Setting the Carrier Frequency
To set the carrier frequency of a path loss model, use
p.set_carrier_frequency(fc)
where fc
is the carrier frequency (in Hz) of the signals of interest. This will automatically update the carrier wavelength based on the current propagation velocity.
Setting the Propagation Velocity
To set the propagation velocity of a path loss model, use
p.set_propagation_velocity(vel)
where vel
is the propagation velocity (in m/s) of the signals of interest.
It is common to use vel = 3e8
for electromagnetic signals, for example.
Since this parameter can be set by the user, MFM may support other communication systems and/or other propagation media, such as underwater acoustics where the propagation velocity is commonly approximated to vel = 1.5e3
for oceanic environments.
Setting the Distance
To set the distance of a path_loss
object p
, simply use
p.set_distance(d)
where d
is the distance of the path in meters.
Example Setup
A typical path_loss
object setup looks something similar to
p = path_loss.create()
p.set_carrier_frequency(fc)
p.set_propagation_velocity(vel)
p.set_distance(d)
Getting the Attenuation
To get the realized attenuation of a path_loss
object p
, simply use
atten = p.get_attenuation()
where atten
is the attenuation of the path loss (power loss, linear scale).
Note that atten
is related to the large-scale gain by simply atten
.
As mentioned, the path_loss
object on its own does not represent any path loss model but is a superclass/parent for all other path loss models in MFM. Thus, there is no way to realize the attenuation on a path_loss
object itself; all other path loss models in MFM will, however, and after which, users can use get_attenuation
to retrieve the realized attenuation.
List of Properties
The path_loss
object contains the following properties:
path_loss.name
path_loss.type
path_loss.distance
path_loss.attenuation
path_loss.carrier_frequency
path_loss.carrier_wavelength
path_loss.propagation_velocity
List of Methods
The path_loss
object contains the following methods:
path_loss.create
Creates a path loss object of a specific type.path_loss.get_attenuation
Returns the realized attenuation of the path loss model.path_loss.initialize
Initializes a path loss object.path_loss.path_loss
Creates a path loss object.path_loss.set_carrier_frequency
Sets the carrier frequency of the channel. Also updates the carrier wavelength accordingly.path_loss.set_distance
Sets the distance of the path (in meters).path_loss.set_name
Sets the name of the path loss model.path_loss.set_path_loss_attenuation
Sets the attenuation of the path loss model.path_loss.set_propagation_velocity
Sets the propagation velocity of the channel. Also updates the carrier wavelength accordingly.path_loss.set_type
Sets the type of path loss model.
Methods Documentation
create(type)
Creates a path loss object of a specific type.
- Usage:
obj = path_loss.create()
obj = path_loss.create(type)
- Input Arguments:
type
— (optional) a string specifying which path loss model to create- Return Values:
obj
— a path loss object
get_attenuation()
Returns the realized attenuation of the path loss model.
- Usage:
val = get_attenuation()
- Return Values:
val
— the attenuation (power loss) of the path
initialize()
Initializes a path loss object.
- Usage:
initialize()
path_loss(name)
Creates a path loss object.
- Usage:
obj = path_loss()
obj = path_loss(name)
- Input Arguments:
name
— an optional name for the object- Return Values:
obj
— an object representing path loss
set_carrier_frequency(fc)
Sets the carrier frequency of the channel. Also updates the carrier wavelength accordingly.
- Usage:
set_carrier_frequency(fc)
- Input Arguments:
fc
— carrier frequency (Hz)- Notes:
- Also updates carrier wavelength.
set_distance(d)
Sets the distance of the path (in meters).
- Usage:
set_distance(d) Sets the distance of the link to a specific
value.
- Input Arguments:
d
— distance of the path (in meters)
set_name(name)
Sets the name of the path loss model.
- Usage:
set_name()
set_name(name)
- Input Arguments:
name
— (optional) a string; if not passed, ‘path-loss’ is the default name used
set_path_loss_attenuation(atten)
Sets the attenuation of the path loss model.
- Usage:
set_path_loss_attenuation(atten)
- Input Arguments:
atten
— the attenuation (power loss) of the path
set_propagation_velocity(val)
Sets the propagation velocity of the channel. Also updates the carrier wavelength accordingly.
- Usage:
set_propagation_velocity(val)
- Input Arguments:
val
— propagation velocity (meters/sec)
set_type(type)
Sets the type of path loss model.
- Usage:
set_type()
set_type(type)
- Input Arguments:
type
— (optional) a string; if not passed, ‘default’ is the default type used