使用STFT进行信号合成分析

时间:2013-07-11 18:26:17

标签: signals dft frequency-analysis

我需要将信号传输到频域,经过一些修改后,再次使用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 

1 个答案:

答案 0 :(得分: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

在你的例子中,你在信号中应用了一个汉恩窗口,然后如果你应用窗口,你需要做一个OLA (Overlap and add)过程来进行正确的重建......

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