#[non_exhaustive]pub enum FrequencyInterpolation {
Linear,
Lmmse(PowerDelayProfile),
SecondOrder,
Spline,
LowPass {
half: usize,
alpha: f64,
},
TimeDomain,
}Expand description
How the pilot estimates are interpolated across the subcarriers.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Linear
Linear between pilot subcarriers.
Lmmse(PowerDelayProfile)
Linear MMSE with the frequency correlation of a power-delay profile.
SecondOrder
The parabola through the three nearest pilots (Coleri et al. 2002, eq. (19)).
Spline
The cubic spline through the pilots, not-a-knot ends (MATLAB spline).
LowPass
The band-limited interpolator of MATLAB interp over 2 * half pilots, for a
spectrum over the fraction alpha of the band of the pilots (interp: 4, 0.5).
Fields
TimeDomain
Zero padding of the IDFT of the pilot estimates (“time-domain” interpolation, Coleri et al. 2002, eqs. (20)–(22)): pilots on the subcarriers $0, L, \dots$ of a grid of $N_{p} L$ subcarriers.
Implementations§
Source§impl FrequencyInterpolation
impl FrequencyInterpolation
Sourcepub fn from_name(
name: &str,
pdp: Option<PowerDelayProfile>,
) -> Result<FrequencyInterpolation>
pub fn from_name( name: &str, pdp: Option<PowerDelayProfile>, ) -> Result<FrequencyInterpolation>
The interpolation of a name: linear, lmmse (with the profile pdp),
second_order, spline, lowpass (MATLAB interp: half = 4, alpha = 0.5)
or time_domain.
§Errors
Error::Config for another name, or for lmmse without a profile.
§Examples
use comnum_waveform::ofdm::estimation::FrequencyInterpolation;
assert_eq!(FrequencyInterpolation::from_name("spline", None)?, FrequencyInterpolation::Spline);
assert!(FrequencyInterpolation::from_name("lmmse", None).is_err());