Python:相位校正

时间:2016-05-10 22:11:25

标签: python fft spyder phase

我有两个音频文件,我的任务是找出一个尽可能匹配文件的最小相位传递函数(文件中有很多噪音,因此无法完美匹配)。我知道滤波器的特性,必须弄清Q和频率。我已经使用声音文件将文件导入到Python中,因此这不是问题。

由于各种原因,最好的选择是匹配相位而不是幅度。如何计算两个文件的相位差并在x轴上输出具有固有频率(hz)的(平滑的)图?我认为一个相当大的情节足以用眼睛匹配过滤器。

我提出的操作顺序:

  1. 计算傅里叶变换(如果不可能,则为FFT)。
  2. 将FFT转换为极坐标(幅度/相位)。
  3. 相互减去相位。
  4. (平滑)并绘制结果。
  5. 第一步很容易使用numpy:

    import numpy.fft
    FFT=numpy.fft.fft(data)
    

    我想知道是否有一些命令可以自动从第二步的FFT中提取幅度和相位。到目前为止没有运气。这是我最需要帮助的一步。

    对于第4步,首先使用fftfreq命令创建索引频率,然后删除绘图的负部分(在数组中的正数之后存储)。情节之后:

    freq=numpy.fft.fftfreq(N,1/44100)
    freq=freq[:N/2]
    FFTPhase=FFTphase[:N/2]
    import matplotlib.pyplot as plt
    plt.plot(FFTphase[freq])
    

    唯一的问题是我收到一条错误消息:" IndexError:用作索引的数组必须是整数(或布尔)类型"

0 个答案:

没有答案