小编Phi*_*hil的帖子

重采样,插值矩阵

我正在尝试为绘图目的插入一些数据.例如,给定N个数据点,我希望能够生成"平滑"图,由10*N左右的内插数据点组成.

我的方法是生成N×10*N矩阵并计算原始向量和我生成的矩阵的内积,得到1乘10*N向量.我已经计算出我想用于插值的数学运算,但我的代码非常慢.我对Python很陌生,所以我希望这里的一些专家可以给我一些关于如何加速我的代码的想法.

我认为问题的一部分是生成矩阵需要10*N ^ 2次调用以下函数:

def sinc(x):
    import math
    try:
        return math.sin(math.pi * x) / (math.pi * x)
    except ZeroDivisionError:
        return 1.0
Run Code Online (Sandbox Code Playgroud)

(这来自采样理论.基本上,我试图从其样本中重新生成信号,并将其上采样到更高的频率.)

矩阵由以下生成:

def resampleMatrix(Tso, Tsf, o, f):
    from numpy import array as npar
    retval = []

    for i in range(f):
        retval.append([sinc((Tsf*i - Tso*j)/Tso) for j in range(o)])

    return npar(retval)
Run Code Online (Sandbox Code Playgroud)

我正在考虑将任务分解成更小的部分因为我不喜欢坐在内存中的N ^ 2矩阵的想法.我可以将'resampleMatrix'变成一个生成器函数并逐行执行内部产品,但我不认为这会加速我的代码,直到我开始在内存中分页内容.

提前感谢您的建议!

python interpolation signal-processing generator matrix

9
推荐指数
1
解决办法
1万
查看次数