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

\[h_{\ell}(t) = \sqrt{\frac{K_{\ell}}{1 + K_{\ell}}} \mathrm{e}^{\mathrm{j} t \omega_{\ell} \cos(\theta_{\ell,0}) + \mathrm{j} \phi_{\ell,0} } + \sqrt{\frac{1}{N(1 + K_{\ell})}} \sum_{n=1}^{N} \mathrm{e}^{\mathrm{j} t \omega_{\ell} \cos\left( \frac{2\pi n + \theta_{\ell,n}}{N} \right) + \mathrm{j} \phi_{\ell,n}}\]

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

\[\mathbf{H}(t,\tau) = \mathbf{A}^{(0)} \sum_{\ell=1}^{L} g_{\ell} h_{\ell}(t) \delta(\tau - \tau_{\ell}) \mathbf{A}^{(1)} \ \text{,}\]

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.