【问题标题】:FFT of uneven time series data in PythonPython中不均匀时间序列数据的FFT
【发布时间】:2021-08-24 10:23:16
【问题描述】:

我有一个时间序列数据说 t = [1, 5, 6, 8.5, 12, 20, 21.5, 22.3, 27, 30] 秒和相应时间 (t) 的电场说 E。现在,如您可能已经注意到时间间隔 (dt) 不均匀或不固定。因此,我实现了手动定义 FFT,而不是调用内置的 FFT() 函数。

def DFT(x):
    """
    Function to calculate the 
    discrete Fourier Transform 
    of a 1D real-valued signal x
    """

    N = len(x)
    n = np.arange(N)
    k = n.reshape((N, 1))
    e = np.exp(-2j * np.pi * k * n / N)
    
    X = np.dot(e, x)
    
    return X

但是,它不起作用。我的目标是计算

  1. E. 的 DFT。
  2. 给定时间数组(t)对应的频率数组。

我谦虚地请求是否有人可以建议并帮助我摆脱这种复杂性。

【问题讨论】:

    标签: python numpy scipy data-science dft


    【解决方案1】:

    尝试制作另一个系列,这将是一种基于原始系列的插值。例如,将一些 ML 模型拟合到数据中,然后用常数 dt 预测输入的输出。 就像这样:

    from sklearn.svm import SVR
    from sklearn.ensemble import RandomForestRegressor as rf
    t=[1, 5, 6, 8.5, 12, 20, 21.5, 22.3, 27, 30]
    E=f([1, 5, 6, 8.5, 12, 20, 21.5, 22.3, 27, 30])
    model=SVR()
    model.fit(t,E)
    ######## or
    model1=rf()
    model1.fit(t,E)
    ########
    t1=[1,2,3,4,5,6,7....30]
    E1=model.predict(t1)
    

    然后对 t1, E1 应用 FFT

    【讨论】:

    • 代码中需要导入包吗?
    • 您需要导入模型的包-SVR、RF或其他。例如 from sklearn.svm import SVR 或 from sklearn.ensemble import RandomForestRegressor
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2022-08-03
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    相关资源
    最近更新 更多