1

信号を周波数ドメインに転送する必要があり、いくつかの変更を加えた後、STFT と ISTFT を使用して時間ドメインに再び転送します。分析と合成に同じウィンドウを使用することにより、完全な再構成が得られます。ただし、これらの 2 つのウィンドウを別々に選択すると、完全な再構築が行われません。元の信号と再構築された信号は、私が観察した限り、フレーム アドバンスの関数であるスケールによって異なります。問題を解決して完全な再構築を行うのを手伝っていただけないでしょうか?

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

あなたの例では、信号に1つのハンウィンドウを適用しています。次に、ウィンドウ処理を適用する場合は、正しい再構築を行うためにOLA (オーバーラップと追加)プロセスを作成する必要があります...

しかし、なぜ異なるウィンドウサイズが必要なのですか?

于 2013-07-12T16:32:48.910 に答える