0

如果 DFT 变换的最大幅度 M = A^2 + B^2 对应于频率 F,(A - 实数,B - DFT 的虚输出,频率为 F),那么执行以下操作是否正确:

for (j = 0; j < size; ++j) {
    data[j] -=  (A*cos(2*PI*F*j/dfts) -
                 B*sin(2*PI*F*j/dfts)) / dfts;
}

为了从原始波数据中消除(减去)频率影响?假设数据是几个具有不同频率的正弦和余弦的总和,并乘以不同的系数。

EDIT1:我可以通过减法实现取消,结果是正确的。上面有一个错误,但可以做到。如果有兴趣,我可以发布这样做的方式。

EDIT2:如果您进行下一次 DFT 变换,您将在 A 和 B 值处获得一个非常小的接近零的值。但是您需要记住,原始数据可以是 4 个频率(正弦和余弦)的总和,但 DFT 变换会为您提供与 DFT 大小除以 2 一样多的值。

4

1 回答 1

2

不——那是行不通的。只有当时域分量与 FFT bin 频率完全匹配并且分量的相位在整个采样窗口中保持不变时,它才能工作,即使是这种情况,您仍然需要在减法中注意相位。

理想情况下,您需要去除(即零)频域中的分量,然后进行逆 FFT。请注意,您可能不希望仅将频域中的感兴趣 bin 归零,因为这会在您对 FFT 进行反演后在时域中产生伪影 - 您需要对感兴趣的 bin 和相邻的 bin 应用窗口函数垃圾箱。

于 2011-05-12T10:23:03.257 回答