1

約 900kHz 離れた 2 つの狭帯域トーン (ベースバンドに変換された約 100kHz の 1 つと約 1MHz の 1 つ) を特徴付ける効率的な方法を考え出そうとしています。時間の経過とともに周波数が大きく変化することはありませんが、監視したい振幅の変動がある可能性があります。

各トーンの幅はおよそ 100 Hz であり、これら 2 つの獣を長時間にわたって約 0.1 Hz の分解能で特徴付ける必要があります。サンプルは、最高のトーンを適切に取得するために、2M サンプル/秒 (TBD) を超えて入ってきます。

周波数領域データを抽出するために、1 秒に 1 回、データに対して 2MSample FFT を超えるブルート フォースを実行することを (可能であれば) 回避しようとしています。効率的なアプローチはありますか?関心のあるバンドの周りで 2 つの (はるかに) 小さい FFT を実行するようなものですか? 私は Goertzel と chirp z の方法を見てきましたが、それが処理の節約に役立つかどうかはわかりません。

4

1 に答える 1

1

関心のある帯域の周りで 2 つの (はるかに) 小さい FFT を実行するようなもの

これは Goertzel と呼ばれるもので、単一ビンの FFT のようなもので、既にご覧になっています。CPU時間を節約できます

とにかく、2M ポイントの FFT を実行する理由はありません。まず第一に、サンプリング レートの約 1/20 の解像度のみが必要なため、20 ポイントの FFT で十分であり、これらの低レートの CPU で十分に実行できるはずです。あなたはトーンの位相を気にしていないようなので、FFT->complex_to_mag.

ただし、常に行うべきことが 1 つあります。目的の信号を見て、正確にそれに適合するレートまでデシメートします。GNU Radio のフィルターは巧妙に実装されているため、フィルター自体はデシメート レートでのみ実行され、節約された CPU サイクルをより優れたフィルターに費やすことができます。

2MHz から 100Hz への直接デシメーション (デシメーション: 20000) は実際には醜いフィルター長になるため、これをマルチレートで行う必要があります。

最初に 100 でデシメートしてから、2 番目のステップで 100 でデシメートして、200Hz の観測可能なスペクトルを残します。xlating fir フィルター ブロックを使用すると、単純なローパス フィルターを使用できます ("Low-Pass Filter Taps" ブロックを使用して、そのようなタップを含む変数を定義します)。

于 2015-08-25T07:54:58.853 に答える