Source code for pyrfu.pyrf.mean_field

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 3rd party imports
import numpy as np

__author__ = "Louis Richard"
__email__ = "louisr@irfu.se"
__copyright__ = "Copyright 2020-2023"
__license__ = "MIT"
__version__ = "2.4.2"
__status__ = "Prototype"


[docs]def mean_field(inp, deg): r"""Estimates mean field xm and wave field xw using polynomial fit of order `deg` for the number of columns larger than 3 assume that first column is time. Parameters ---------- inp : array_like Input data. deg : int Degree of the fitting polynomial Returns ------- inp_mean : numpy.ndarray Mean field. inp_wave : numpy.ndarray Wave field """ inp_mean = inp inp_wave = inp n_rows, n_cols = inp.shape if n_cols >= 4: time = (inp[:, 0] - inp[0, 0]) / (inp[n_rows, 0] - inp[0, 0]) data = inp[:, 1:] else: time = np.arange(len(inp)) data = inp for i in range(data.shape[1]): res = np.polyfit(time, data[:, i], deg) polynomial_coeffs = res[0] inp_mean[:, i] = np.polyval(polynomial_coeffs, time) inp_wave[:, i] = data[:, i] - inp_mean[:, i] return inp_mean, inp_wave