Scipy FFT函数和规范化无法提供正确的结果

时间:2017-03-06 20:10:44

标签: scipy signal-processing fft normalization

我有一个SuperCollider制作的振荡器组,它通过OSC从python接收相位和幅度。然而,结果听起来根本不正确。起初我认为问题出在我的SuperCollider代码中,但现在我开始怀疑我的FFT函数和规范化,这是我的代码:

def readNormalize(length, location,sample):

    samplerate, data = wavfile.read(location)

    a = data.T[0] # first track of audio
    c = fft(a[sample:], length)


    ownSum = 0;
    length = int(length/2)
    for i in range(0, length):
        ownSum += abs(c[i])
    normalizer = 1/ownSum

    phases = []
    amplitudes = []
    for i in range(0,length):
        amplitudes.append(abs(c[i])*normalizer)
        phases.append(np.angle(c[i]))

    return amplitudes, phases

因此,函数接收从何处读取的位置,要计算的FFT的长度以及要从哪个wav文件样本中读取。我的归一化是通过取复数的向量之和,将1除以和,然后将向量乘以归一化值来完成的。我不确定它是否正确完成,这是正确的方法吗?我在SuperCollider中听到的唯一一件事就是这个踢鼓声不是它应该发出的声音。我错过了一些重要的东西吗?

0 个答案:

没有答案