Numpy 合成相位和正弦波的大小?

Numpy 合成相位和正弦波的大小?,numpy,scipy,signal-processing,fft,Numpy,Scipy,Signal Processing,Fft,我一直在研究音频信号的去相关。我正在关注一篇研究论文,其中的技术是生成一个序列号,其方式是在相位随机变化时幅度保持不变 现在,问题是我生成了一个正弦波,并对其进行了fft,使用NumPy计算了相位和幅值,如下面的代码所示。 import numpy as np from scipy.fftpack import fft, rfft, ifft, irfft Farendsig = ((np.sin(2 * np.pi * np.arange(48000 * 0.02133) * 2000 /

我一直在研究音频信号的去相关。我正在关注一篇研究论文,其中的技术是生成一个序列号,其方式是在相位随机变化时幅度保持不变
现在,问题是我生成了一个正弦波,并对其进行了fft,使用NumPy计算了相位和幅值,如下面的代码所示。

import numpy as np
from scipy.fftpack import fft, rfft, ifft, irfft

Farendsig = ((np.sin(2 * np.pi * np.arange(48000 * 0.02133) * 2000 / 48000)) * 32767).astype(np.int16)

freq = fft(Farendsig, 1024)  # fft output complex

phase = np.angle(freq)  # phase

magnitude = np.abs(freq)  # magnitude

combined = np.multiply(magnitude, np.exp(1j * phase))

FarendSyth = (ifft(combined, 1024) * (32767 + 0j)).astype(np.int16)
现在,当我按照StackOverflow答案重新合成相同的信号时:。结果信号在某些指标上与原始信号不同
我在这里干什么

谢谢。

不管怎样,我找到了答案:

FarendSyth = (ifft(combined, 1024)).astype(np.int1
我将ifft结果乘以
32767
,这导致了结果中的问题。在上面的代码中替换这一行可以得到准确的结果

谢谢