analyze_superlet: Conduct the superlet transform on a time series or signal

View source: R/analyze_superlet.R

analyze_superletR Documentation

Conduct the superlet transform on a time series or signal

Description

Compute the superlet transform using a complex Morlet wavelet following the approach of Moca et al. (2021). The superlet transform increases time frequency resolution by combining multiple wavelet orders at each frequency. Both the frequency sampling and the scaling of superlet order with frequency can be explicitly controlled.

Usage

analyze_superlet(
  data,
  upperPeriod,
  lowerPeriod,
  Nf,
  c1,
  o = NULL,
  mult = TRUE,
  order_scaling = c("none", "log2", "linear", "sqrt", "power"),
  order_alpha = 1,
  verbose = FALSE
)

Arguments

data

Input data as a matrix or data frame. The first column must represent depth or time, and the second column the signal or proxy record.

upperPeriod

Maximum period to be analysed. Controls the lowest analysed frequency.

lowerPeriod

Minimum period to be analysed. Controls the highest analysed frequency.

Nf

Number of frequencies used to construct the superlet spectrum.

c1

Base number of cycles of the Morlet wavelet. Acts as the fundamental wavelet width.

o

numeric vector of length two defining the minimum and maximum superlet order.

mult

Logical. If TRUE, the number of cycles increases multiplicatively with superlet order. If FALSE, cycles increase additively.

order_scaling

Character string defining how the number of wavelet cycles varies with scale. One of "log2", "linear", "sqrt", "quadratic", or "power".

order_alpha

Numeric. Exponent used when scaling = "power". Values greater than one emphasize high frequency sharpening, whereas values smaller than one emphasize low frequency sharpening.

verbose

Logical. If TRUE, print progress and interpolation information.

Value

A list with class "analyze.superlet" containing Power: time frequency power spectrum dt: sampling interval after interpolation dj: number of frequencies Power.avg: average spectral power Period: physical periods corresponding to frequencies nc: number of columns in the input data nr: number of frequency levels axis.1: x axis values (time or depth) axis.2: y axis values (log2 scaled periods) c1: base number of wavelet cycles o: numeric vector of length two defining the minimum and maximum superlet order. If NULL, all frequencies are analysed using order one. freq.scale: scaling of the frequencies order.mode: order.mode ("none", "log2", "linear", "sqrt", "power") x: interpolated x values y: interpolated signal values

Author(s)

Adapted from MATLAB implementations by V. V. Moca et al. (2021)

References

Moca, V. V., Bârzan, H., Nagy-Dăbâcan, A., & Mureșan, R. C. (2021). Time-frequency super-resolution with superlets. Nature Communications, 12(1), 337. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1038/s41467-020-20539-9")}

Examples


## Example 1. Using the Total Solar Irradiance data set of Steinhilber et al. (2012)
TSI_sl <-
  analyze_superlet(
    data = TSI,
    upperPeriod = 8192,
    lowerPeriod = 16,
    Nf = 100,
    c1 = 2,
    o = c(1, 5),
    mult = TRUE,
    order_scaling = "log2",
    order_alpha = 1,
    verbose = FALSE
  )


## Example 2. Using the magnetic susceptibility data set of Pas et al. (2018)
mag_sl <-
  analyze_superlet(
    data = mag,
    upperPeriod = 254,
    lowerPeriod = 0.1,
    Nf = 100,
    c1 = 2,
    o = c(1, 5),
    mult = TRUE,
    order_scaling = "log2",
    order_alpha = 1,
    verbose = FALSE
  )


## Example 3. Using the greyscale data set of Zeeden et al. (2013)
grey_sl <-
  analyze_superlet(
    data = grey,
    upperPeriod = 256,
    lowerPeriod = 0.02,
    Nf = 100,
    c1 = 2,
    o = c(2,5),
    mult = TRUE,
    order_scaling = "log2",
    order_alpha = 1,
    verbose = FALSE)



WaverideR documentation built on April 6, 2026, 5:06 p.m.