我无法找到两个数据集之间的已知相位,我们称它们为数据集 11 和数据集 12。我获得了 1024 个样本的样本大小,采样率为 500kHz,总采样时间为 2.048 毫秒。
此问题中使用的所有数据和代码都可以在此存储库中找到 - https://github.com/smake5730/fft_phase/graphs/contributors
从下面的两个数据集的示例数据可以看出,电压领先电流约 90°。(放大)
当我用 1024 个 bin 计算 FFT 时,我得到了清晰的峰值。(放大)
我在此期间应用 Hanning 窗口并且不使用零填充。
我使用 atan2(a/b) 方法使用最大峰值的位置来获取相位,发现我得到以下内容。第一个数据给我+90°,第二个数据给我-90°。频率被正确识别。

我尝试在信号末尾添加零填充,但并没有解决问题。我也尝试过上采样,它也没有给出正确的相位。
有人对我可以尝试什么或哪里出错有任何想法/提示吗?
编辑正如下面所指出的,我的代码采用单独的垃圾箱,并且在第二组中使用了不正确匹配的垃圾箱。





