我正在使用dsp算法,我使用时域信号的FFT,使用 sqrt(real * real + imaginary * imaginary)
计算每个bin的幅度,然后修改幅度。如何将修改后的幅度转换回复数域,以便运行IFFT并恢复处理后的时域信号?
答案 0 :(得分:3)
您很可能希望保留阶段并使用它来重建新的bin值。你正在做的是修改极性形式的复数,即改变幅度但保留阶段:
mag = sqrt(re^2 + im^2) ; convert re, im to polar (mag, phi)
phi = atan2(im, re)
mag = mag * scale ; apply factor `scale` to magnitude
re = mag * cos(phi) ; convert new mag, phi back to re, im
im = mag * sin(phi)