【问题标题】:interpolate to larger 1D array using python使用 python 插值到更大的一维数组
【发布时间】:2020-07-12 06:38:33
【问题描述】:

我有五个具有多个长度的一维数组。我希望所有数组的长度都与cD1 相同。我想在数组上应用插值以具有相同的长度。 我尝试使用 linear_interp = interp1d(cD5, cD1) ,但它不能正常工作。任何帮助表示赞赏!

from scipy.interpolate import interp1d
coeffs = wavedec(data, 'sym5', level=5)
cA5,cD5,cD4,cD3,cD2,cD1=coeffs
cD5.shape #(248,)
cD4.shape #(488,)
cD3.shape #(967,)
cD2.shape #(1926,)
cD1.shape #(3844,)

【问题讨论】:

    标签: python arrays signal-processing interpolation wavelet


    【解决方案1】:

    据我所知,您缺少x 坐标。

    尝试为您的数组添加一个通用的x 坐标:

    import numpy as np
    from scipy.interpolate import interp1d
    
    common_length_data = []
    common_x = np.linspace(0, 1, len(cD1))
    for c in [cA5,cD5,cD4,cD3,cD2,cD1]:
        x = np.linspace(0, 1, len(c))
        f = interp1d(x, c)
        common_length_data.append(f(common_x))
    

    【讨论】:

    • 感谢您的解决方案。我收到此错误ValueError: x and y arrays must be equal in length along interpolation axis
    • 自第一次回答以来,我进行了一些编辑。您仍然收到错误消息吗?
    • 不,非常感谢您的解决方案。我想问一下linspace中的0和1是什么意思?? , 那么现在common_length_data 一个列表包含所有具有相同长度的数组??
    • 01 in linspace 是 x 坐标的第一个和最终值(具体值无关紧要 - 您可以输入任何其他数字)。是的,common_length_data 是包含请求数组的列表。
    • 非常感谢您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 2017-01-12
    • 2017-01-26
    • 2021-01-13
    相关资源
    最近更新 更多