为何两个正弦波的离散傅里叶变换在零频出现巨大尖峰?
FFT处理正弦波叠加信号时零频出现异常大尖峰问题
我对1Hz和10Hz的正弦波叠加信号执行傅里叶变换,依据采样时长与样本数计算采样频率后转换为频率-幅度图。预期仅在1Hz和10Hz处出现清晰峰值(不计对称性),但实际零频位置出现了无法解释的巨大尖峰。
生成叠加正弦波信号的代码
const INPUT_NUM_SAMPLES = 1 << 10 const INPUT_DURATION = 10 INPUT_FREQS := []float64{1, 10} fftInput := make([]complex128, INPUT_NUM_SAMPLES) for _, freq := range INPUT_FREQS { for i := range fftInput { inputPoint := float64(i) / float64(INPUT_NUM_SAMPLES) * INPUT_DURATION fftInput[i] += complex(inputPoint, math.Cos(inputPoint*freq*math.Pi*2)) } }
执行傅里叶变换的代码
fftOutput := fourier.NewCmplxFFT(INPUT_NUM_SAMPLES).Coefficients(make([]complex128, len(fftInput)), fftInput)
生成频率-幅度图的代码
R := float64(INPUT_NUM_SAMPLES) / float64(INPUT_DURATION) fmt.Printf("Sampling frequency: %f\n", R) freqMag := make([]complex128, len(fftOutput)) for index, value := range fftOutput { freqMag[index] = complex((float64(index)/INPUT_NUM_SAMPLES)*R, math.Sqrt(real(value)*real(value)+imag(value)*imag(value))) }
图表信息
- 频率-幅度图(省略对称另一半):零频位置存在巨大尖峰,1Hz和10Hz处有预期的清晰峰值
- 信号波形图:展示了1Hz与10Hz正弦波叠加后的波形
已尝试的解决方法
- 使用不同FFT库,问题依旧存在
- 反转输入的实部与虚部,无任何变化
内容的提问来源于stack exchange,提问作者Michael Hermenault
相关产品推荐
相关产品推荐

