我需要将信号传输到频域,经过一些修改后,再次使用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
答案 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)过程来进行正确的重建......
但为什么你需要不同的窗口大小?