# Free-Space Path Loss

*A free-space path loss model.*

`obj/path_loss/path_loss_free_space.m`

Superclass: Path Loss

#### On This Page

- About
- Creating a Free-Space Path Loss Object
- Key Properties
- Setting the Path Loss Exponent
- Example Setup
- Getting the Attenuation
- List of Properties
- List of Methods
- Methods Documentation

### About

The `path_loss_free_space`

object represents a free-space path loss model.

Free-space path loss can be described entirely by three parameters:

- the carrier wavelength
- the distance
- the path loss exponent

The path loss (or attenuation) stemming from a free-space path loss model can be deterministically written as

where is the path * gain* and is the path

*.*

**loss**When , this is the classical Friis formula for path loss. Typically, except in rare settings with significant clutter. Most often, .

The `path_loss_free_space`

object is a subclass of the `path_loss`

object.

### Creating a Free-Space Path Loss Object

A free-space path loss object `path_loss_free_space`

can be created via

```
p = path_loss.create('free-space')
```

### Key Properties

The `path_loss_free_space`

object inherits all properties of the `path_loss`

object, the key ones being

```
p.attenuation
p.carrier_frequency
p.carrier_wavelength
p.propagation_velocity
p.distance
```

In addition to these, the `path_loss_free_space`

object also has the property

```
p.path_loss_exponent
```

to capture the path loss exponent ().

### Setting the Path Loss Exponent

To set the path loss exponent of a free space path loss object `p`

, use

```
p.set_path_loss_exponent(ple)
```

where `ple`

is the path loss exponent (a traditionally positive number).

### Example Setup

A typical `path_loss_free_pace`

object setup looks something similar to

```
p = path_loss.create()
p.set_carrier_frequency(fc)
p.set_propagation_velocity(vel)
p.set_distance(d)
p.set_path_loss_exponent(ple)
```

### Invoking a Realization

To realize the path loss, use

```
atten = p.realization()
```

which, when appropriately setup, will return the attenuation `atten`

for the given carrier wavelength, distance, and path loss exponent.

Note that `atten`

is related to the large-scale gain by simply `atten`

.

### Getting the Attenuation

To get the realized attenuation of a `path_loss_free_space`

object `p`

, one can also use

```
atten = p.get_attenuation()
```

where `atten`

is the attenuation of the path loss (power loss, linear scale).

### List of Properties

The `path_loss_free_space`

object contains the following properties:

`path_loss_free_space.path_loss_exponent`

`path_loss_free_space.name`

`path_loss_free_space.type`

`path_loss_free_space.distance`

`path_loss_free_space.attenuation`

`path_loss_free_space.carrier_frequency`

`path_loss_free_space.carrier_wavelength`

`path_loss_free_space.propagation_velocity`

### List of Methods

The `path_loss_free_space`

object contains the following methods:

`path_loss_free_space.compute_path_loss_attenuation`

Computes the path attenuation (path loss) according to the free-space path loss (FSPL) formula.`path_loss_free_space.create`

Creates a path loss object of a specific type.`path_loss_free_space.get_attenuation`

Returns the realized attenuation of the path loss model.`path_loss_free_space.initialize`

Initializes a path loss object.`path_loss_free_space.initialize_free_space`

Initializes a free-space path loss object.`path_loss_free_space.path_loss_free_space`

Creates a free-space path loss object.`path_loss_free_space.realization`

Invokes a realization of the path loss.`path_loss_free_space.set_carrier_frequency`

Sets the carrier frequency of the channel. Also updates the carrier wavelength accordingly.`path_loss_free_space.set_distance`

Sets the distance of the path (in meters).`path_loss_free_space.set_name`

Sets the name of the path loss model.`path_loss_free_space.set_path_loss_attenuation`

Sets the attenuation of the path loss model.`path_loss_free_space.set_path_loss_exponent`

Sets the path loss exponent.`path_loss_free_space.set_propagation_velocity`

Sets the propagation velocity of the channel. Also updates the carrier wavelength accordingly.`path_loss_free_space.set_type`

Sets the type of path loss model.

### Methods Documentation

`compute_path_loss_attenuation()`

`compute_path_loss_attenuation()`

Computes the path attenuation (path loss) according to the free-space path loss (FSPL) formula.

- Usage:
`atten = compute_path_loss_attenuation()`

*Return Values*:`atten`

— the path attenuation (path loss) (a power loss)*Notes*:- The free-space path loss (FSPL) equation used is G = (lambda / (4*pi))^2 * (1/d)^ple, where G is the inverse path loss in terms of power.

`create(type)`

`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()`

`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()`

`initialize()`

Initializes a path loss object.

- Usage:
`initialize()`

`initialize_free_space()`

`initialize_free_space()`

Initializes a free-space path loss object.

- Usage:
`initialize_free_space()`

`path_loss_free_space(name)`

`path_loss_free_space(name)`

Creates a free-space path loss object.

- Usage:
`obj = path_loss_free_space()`

`obj = path_loss_free_space(name)`

*Input Arguments*:`name`

— an optional name for the object*Return Values*:`obj`

— an object representing free-space path loss

`realization()`

`realization()`

Invokes a realization of the path loss.

- Usage:
`atten = realization()`

*Return Values*:`atten`

— the realized path loss attenuation*Notes*:- Since no random variables are involved in the FSPL equation, it will be determininstic and thus fixed across realizations.

`set_carrier_frequency(fc)`

`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)`

`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)`

`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)`

`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_path_loss_exponent(ple)`

`set_path_loss_exponent(ple)`

Sets the path loss exponent.

- Usage:
`set_path_loss_exponent(ple)`

*Input Arguments*:`ple`

— path loss exponent (a positive number)

`set_propagation_velocity(val)`

`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)`

`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