Multipath Fading¶
This module provides several implementations for statistical time-variant channel models. A single multipath propagation path is modeled as a Rician fading distribution by a sum-of-sinusoids approach
as proposed by Xiao et al.[1]. Each propagation path is composed of a specular component and a diffuse component, with rice factor \(K_{\ell}\) balancing the power distribution between the both components. The more sinusoids \(N\) are summed to model the fading, the more accurate the model is, however, Xiao et al.[1] indicate that \(N = 8\) is a good starting point for balancing accuracy with computational complexity. The overall path has a doppler shift \(\omega_{\ell}\) that is balanced by the angles \(\theta_{\ell,0}\) and \(\theta_{\ell,n}\) for line of sight and diffuse components, respectively, with a random phase \(\phi_{\ell,0}\) and \(\phi_{\ell,n}\). Note that for \(K_{\ell} = 0\), i.e. a non line of sight fading consisting of diffuse components only, this approximates a Rayleigh distribution. This model can is extended by \(L\) spatial delay taps, meaning there are multiple spatial propagation paths resulting in a delay spread of the transmitted signal at the receiver, so that the overall channel is the sum of all paths
with \(g_{\ell}\) being the gain factor of the \(\ell\)-th path, \(\tau_{\ell}\) the delay of the \(\ell\)-th path, and \(\mathbf{A}^{(0)}\) and \(\mathbf{A}^{(1)}\) being the antenna correlation matrices of the transmitter and receiver, respectively.
For MIMO configurations with Devices
featuring multiple transmit- or receive-antennas,
custom antenna correlations \(A^{(0)}\) and \(A^{(1)}\) can be specified for both linked devices, respectively, as proposed by Yu et al.[2].
However, these antenna correlations do not model antenna array responses from spatial wave impingements.
Instead, they are purely statistical approximations.
classDiagram class MultipathFadingChannel { +realize() +propagate() } class MultipathFadingRealization { +propagate() } class PathRealization { +propagate() } class MultipathFading5GTDL { +realize() +propagate() } class MultipathFadingCost259 { +realize() +propagate() } class MultipathFadingExponential { +realize() +propagate() } MultipathFadingChannel --o MultipathFadingRealization : realize() PathRealization --* MultipathFadingRealization MultipathFading5GTDL --|> MultipathFadingChannel MultipathFadingCost259 --|> MultipathFadingChannel MultipathFadingExponential --|> MultipathFadingChannel click MultipathFadingChannel href "channel.multipath_fading_channel.MultipathFadingChannel.html" click MultipathFadingRealization href "channel.multipath_fading_channel.MultipathFadingRealization.html" click PathRealization href "channel.multipath_fading_channel.PathRealization.html" click MultipathFading5GTDL href "channel.multipath_fading_templates.MultipathFading5GTDL.html" click MultipathFadingCost259 href "channel.multipath_fading_templates.MultipathFadingCost259.html" click MultipathFadingExponential href "channel.multipath_fading_templates.MultipathFadingExponential.html"
The base equations are implemented in the hermespy.channel.fading.fading.MultipathFadingChannel
and its respective
hermespy.channel.fading.fading.MultipathFadingRealizaiton
/ hermespy.channel.fading.fading.MultipathFadingSample
.
Users may directly use the hermespy.channel.fading.fading.MultipathFadingChannel
with their own parameter sets.
More conveniently, several standard parameterizations such as hermespy.channel.fading.tdl.TDL
hermespy.channel.fading.cost259.Cost259
and hermespy.channel.fading.exponential.Exponential
are provided.