将信号从 100.21 Hz 降采样到 8 Hz(非整数抽取因子)

mac*_*ery 5 python interpolation downsampling pandas

我找到了以下方法来对 python 中的信号进行下采样。我想在 asample_rate为 100.21 时使用此方法,但我认为目前它仅适用于 2 的整数幂。是否可以将频率 100.21 Hz 的信号下采样至 8 Hz?

def interpolateDataTo8Hz(data,sample_rate,startTime):
    # Downsample
    idx_range = range(0,len(data))
    data = data.iloc[idx_range[0::int(sample_rate)/8]]

    # Set the index to be 8Hz
    data.index = pd.DatetimeIndex(start=startTime,periods = len(data),freq='125L')

    # Interpolate all empty values
    data = interpolateEmptyValues(data)
    return data

def interpolateEmptyValues(data):
    cols = data.columns.values
    for c in cols:
        data[c] = data[c].interpolate()

    return data
Run Code Online (Sandbox Code Playgroud)