0

DFT 変換の最大振幅 M = A^2 + B^2 が周波数 F に対応する場合 (A - 実数、B - 周波数 F での DFT の虚数出力)、次のことを行うのは正しいですか?

for (j = 0; j < size; ++j) {
    data[j] -=  (A*cos(2*PI*F*j/dfts) -
                 B*sin(2*PI*F*j/dfts)) / dfts;
}

元の波形データからその周波数の影響をキャンセル(減算)するには?データは、周波数が異なるいくつかのサインとコサインの合計であり、異なる係数が掛けられていると想定されます。

EDIT1:減算することでキャンセルできましたが、結果は正しいです。上記に誤りがありましたが、可能です。興味があれば、それを行う方法を投稿できます。

EDIT2: そして、次の DFT 変換を行うと、A 値と B 値でゼロに近い非常に小さい値が得られます。ただし、元のデータは 4 つの周波数 (正弦と余弦) の合計である可能性がありますが、DFT 変換では、DFT のサイズを 2 で割った値が得られることを覚えておく必要があります。

4

1 に答える 1

2

いいえ、うまくいきません。時間領域コンポーネントが FFT ビン周波数と正確に一致し、コンポーネントの位相がサンプル ウィンドウ全体で一定である場合にのみ機能します。この場合でも、減算で位相を処理する必要があります。

理想的には、周波数領域のコンポーネントを削除 (ゼロ) してから、逆 FFT を実行する必要があります。FFT を逆にした後、時間領域でアーティファクトが生成されるため、周波数領域で関心のあるビンを単にゼロにしたくないことに注意してください。関心のあるビンと隣接するビンにウィンドウ関数を適用する必要があります。ビン。

于 2011-05-12T10:23:03.257 に答える