1

我需要将信号转移到频域,经过一些修改后,再次使用 STFT 和 ISTFT 转移回时域。通过使用相同的窗口进行分析和综合,将获得完美的重建。但是,如果我选择两个不同的窗口,我将无法完全重建。就我所观察到的而言,原始信号和重建信号的比例是帧提前的函数。如果您能帮助我解决问题以获得完整的重建,那就太好了?

x             = sin(t)
Nfft          = 256;
Frame_advance = 0.5*Nfft;
window_a       = hann(1500);
window_s       = hann(Nfft);
X  = STFT(x,Nfft,Frame_advance,window_a)
x2 = ISTFT(X,Nfft,Frame_advance,window_s) % reconstructed 
4

1 回答 1

0

我不知道你的 STFT 和 ISTFT 功能,你也使用相位信息吗?

这是我的示例一步一步(无窗口)

    %get some point for example 2048 points of signal
    x=signal(1:2048);
    %Make FFT
    y=fft(x);
    %Amplitude of the FFT
    mx=abs(y);
    %get Phase Information
    ma=angle(y);
    %back the signal to complex
    y2= mx .* ( cos(ma) + sqrt(-1) *(sin(ma)) );
    %Apply Inverse FFT
    x2=real(ifft(y2));

现在 x == x2

在您的示例中,您是否在信号中应用了一个 Hann 窗口,那么如果您应用窗口,则需要进行 OLA (重叠和添加)过程以进行正确的重建......

但是为什么你需要不同的窗口大小?

于 2013-07-12T16:32:48.910 回答