2016-05-05 17 views
-1

私は0から255のデータを取得するプロジェクトに取り組んでいます。このデータが特定の文字列に従うかどうかにかかわらず、 Gnuplot、それ以外の場合はdata.txtファイルに保存されます。私が直面していますライブ処理のための信号処理データ(C++のFFTとGNUPLOT)

問題:

  1. 私はプロットだグラフが滑らかではなく、ギザギザです。私は のようにFFTW3またはそのようなプログラム を使って処理してデータを平滑化したいと思います。私はこれを行う必要があるので、私はさらに の参照のためのデータを分析することができます。

  2. 私は高速フーリエ変換について読みましたが、私が受け取った数字の文字列にフーリエをどのように適用するかはわかりません。

私が採用すべきコードを教えてください。

結論:

私は効果的に滑らかにし、ライブグラフでそれをプロットするために必要な数の連続した文字列の形式でデータを取得します。

+0

あなたの質問は間違っていて、不明で、一般的にあなたが扱っている問題の理解の不足を表示します。あなたの質問の弱点の例として、あなたのデータはどこから来ていますか?それは継続的に到着しているのか、それとも離散した、識別可能な部分に入っていますか?たとえ誰かがあなたを助けようとしていたとしても、詳細の完全な欠如のせいで彼らはできません。私はあなたがこの質問を削除することを提案し、あなたの問題に取り組んで、答えることができる質問をするために戻ってくる... – gboffi

答えて

1

高速フーリエはアプリケーションにとって過度のものです。サンプルをローパスフィルタ処理してノイズを低減する必要があります。

私はそう、あなたのサンプル入力が一定の速度を持っていると仮定しています:

1)あなたが興味を持っている最大周波数を特定する(スペクトログラムかのサンプルのフーリエプロットはそれを識別するためにここに役立つかもしれません。 、それのための数学ソフトウェアを使用する(オクターブ、matlab、numpyなど))。

2)ブレーク周波数がターゲットの最大値を超えるデジタルローパスフィルタを設計します(印刷したいだけでなく、すべてのサンプルを処理します)。

3)必要なものを印刷します。

+0

FFTフィルタは非常に高速です(O(n log n))。時間領域でのローパスは、FFT方法よりも高速であるために、平均して数点の平均を取る必要があります。 – roadrunner66

+1

@ roadrunner66あまりにも速くはありません。時間領域のFIRを実装する方が簡単です。おそらく十分速いでしょう。 「時間ドメインは非常に少ないポイントを平均しなければならない」ということは、サンプルレート、ターゲットレスポンス、およびデシメーションレート、私たちが知らないすべてのものに依存する。 – xvan

関連する問題