如果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.
答案 0 :(得分:2)
不 - 那不行。只有当时域组件与FFT bin频率完全匹配并且组件的相位在整个样本窗口中保持不变时才能工作,即使是这种情况,您仍需要小心减法中的相位。
理想情况下,您需要移除(即归零)频域中的分量,然后执行逆FFT。请注意,您可能不希望仅将频域中感兴趣的bin归零,因为这会在您反向FFT后在时域中产生伪影 - 您需要将窗口函数应用于感兴趣的bin和相邻的bin二进制位。