我需要将信号转换到频域,并在经过一些修改后,再次使用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
发布于 2013-07-12 16:32:49
我不知道你的STFT和ISTFT函数,你也在使用相位信息吗?
下面是我的示例step by step (无窗口):
%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)过程来进行正确的重建……
但是为什么你需要不同的窗口大小呢?
https://stackoverflow.com/questions/17600720
复制