0

いくつかの実験データで MATLAB の ifft 関数を使用しようとしていますが、期待した結果が得られません。

対数サイン スイープ励振の周波数データが​​あるので、振幅 [g's]、周波数 [Hz]、および位相 (ポイントはパイロット ポイントであるため 0) を知っています。

それを ifft 関数に直接入力しようとしましたが、結果として複素数が得られました (時報なので、実際の結果を期待していました)。問題は信号が対称ではない可能性があると考えたため、この方法で対称部分を計算しました(「for」ループで)

x(i) = conj(x(mod(N-i+1,N)+1))

振幅ベクトルの最後に追加しました。

new_amp = [amplitude x];

このように、新しい振幅ベクトルは対称ですが、そのベクトルの次元も 2 倍にしました。これは、周波数ベクトルの次元も 2 倍にする必要があることを意味します。

とにかく、新しい振幅ベクトルを ifft に供給しましたが、それでも対数サイン スイープは得られませんが、今回の出力は予想どおり実数です。

プロットの時間 [s] を計算するために、次の式を使用しました。

t = 60*3.33*log10(f/f(1))/(sweep rate) 

私は何を間違っていますか?前もって感謝します

4

1 に答える 1

1

指定された周波数値から同一の時間領域信号を作成する場合は、多くの詳細を考慮する必要があります。私には非常に複雑な問題のように思われ、その背後にある数学について非常に強力な背景が必要だと思います。

しかし、より受け入れられる結果を得るために、いくつかの詳細に取り組むことができると思います。

1- 時間ベクトルは、周波数ステップと最大値からのサンプリングに基づいて等間隔にする必要があります。

t = 0:1/fs:N/fs;
where: *N* is the length of signal in frequency domain, and *fs* is twice the 
highest frequency in frequency domain.

2-私が思うに、周波数ビンにはある種の対数位相が必要です。

3-周波数ドメインの信号は、時間ドメインで実際の信号を持つために偶数でなければなりません。

誰かがそれを改善するためにさえ、これが役立つことを願っています。

于 2014-11-21T12:28:28.563 に答える