estimateMaskFrequency: Mask Frequency of the 2005 Masking

View source: R/estimateMaskFrequency.R

estimateMaskFrequencyR Documentation

Mask Frequency of the 2005 Masking

Description

Estimates the frequency of the masking signal of 2005 from the instantaneous amplitude and frequency of the first sifted component of a signal.

Usage

estimateMaskFrequency(signal, samplingInterval, sifting)

Arguments

signal

Numeric vector of finite real values without dim, in the units of the quantity.

samplingInterval

Sampling interval in seconds, a finite number greater than zero, without default.

sifting

Named list of sifting controls, as in decomposeEMD; the rule "consecutive" is rejected.

Details

With A_1 and \nu_1 the instantaneous amplitude and frequency, computed by computeInstantaneousAttributes, of the first sifted component y_1 = E_1(x) without mask, the estimate is

\bar\nu = \frac{\sum_n A_1[n] \, \nu_1[n]^2}{\sum_n A_1[n] \, \nu_1[n]},

with the sums over the samples where \nu_1 is defined. The result is the frequency of the rule "pair" of decomposeMaskedEMD.

Value

A number, the mask frequency in Hz.

Conditions

A signal without a first extracted component stops with an error. When the weights A_1 \nu_1 sum to zero the estimate is undefined, and the function stops with an error of class xemdZeroEnergy.

References

The selection of the reflected extrema and the spline interpolation of the envelope nodes are adapted from emd.m (G. Rilling, March 2007), distributed with CEEMDAN revision af9a0f83, copyright (c) 2020 Marcelo A. Colominas, MIT License; see the NOTICE file of the installed package.

See Also

decomposeMaskedEMD, computeInstantaneousAttributes

Examples

Time <- seq(0, 9, length.out = 3000)
Signal <- sin(pi * Time) + sin(2 * pi * Time) + sin(6 * pi * Time) +
    0.5 * Time
Sifting <- list(stopRule = "doubleThreshold", thresholds = c(0.05, 0.5),
                fraction = 0.05, maxSift = 2000, boundary = "reflection",
                maxModes = 3)
# One sample per second, so the result is in cycles per sample.
estimateMaskFrequency(Signal, samplingInterval = 1, sifting = Sifting)
# The time step of the signal, 9 / 2999 s.
estimateMaskFrequency(Signal, samplingInterval = 9 / 2999, sifting = Sifting)

xemd documentation built on Nov. 9, 2026, 1:09 a.m.