将计算出的复杂bin的幅度转换回其复杂形式

时间:2013-12-03 21:06:13

标签: signal-processing fft complex-numbers

我正在使用dsp算法,我使用时域信号的FFT,使用 sqrt(real * real + imaginary * imaginary) 计算每个bin的幅度,然后修改幅度。如何将修改后的幅度转换回复数域,以便运行IFFT并恢复处理后的时域信号?

1 个答案:

答案 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)