2011-08-15 6 views
1

おやすみ。 私はDSPが貧弱です。私はアルゴリズムを理解するのが難しいです。 私は、音波# を録音するレコーダー機能を持つC#アプリケーションを持っていますが、このサウンドはすべてのサウンドが混在しています。具体的には、私が を受け取ったとき、私はこのデータをフィルタリングして、高い周波数のフィルタリングされたオーディオデータのみを保存します。 サンプルカットオフ周波数は15kHzです。所与このフィルタの は、 サイズ、 カットオフ周波数ここに、PCMオーディオデータのハイパスフィルタのサンプルがありますか?

C/C++との間でデータのサンプルであるiは、データのサンプルは、次にハイパスフィルタを適用した結果を保存することを受け取ったとき

結構ですwavに。

あなたがサンプルレートを知っておく必要がありますし、また、あなたが適切なフィルタを設計することができます前に、あなたのフィルタ仕様の合理的な考えを持っている

答えて

7

を-thong。 15kHzのカットオフを指定するだけでは十分ではありません。フィルタ(すなわち、フィルタの複雑さという

注意をあなたはその後、フィルタ設計パッケージにこれらのパラメータを供給することができ、これはあなたになど、すべてのフィルタ係数を与える

Sample rate: 44.1 kHz 
Stop-band: < 12 kHz 
Stop-band rejection: > 80 dB 
Pass-band: > 15 kHz 
Passband ripple: +/- 1 dB 

:あなたはこのような何かをしたいかもしれませんオーダー=段数または「タップ数」)はフィルタ仕様に大きく依存するため、仕様を簡単に使いこなすことができるフィルタデザインパッケージを使用して、理想的には設計要件を必要とする帯域幅を計算します。

フェーズ/遅延が重要であるかどうかを判断する必要もあります。フェーズ/遅延がクリティカルでない場合は、定数グループ遅延(より高価)または再帰IIRを使用するリニアフェーズFIRを使用することが重要です実装する)。

無料のオンラインフィルタデザインパッケージが用意されています。 http://www-users.cs.york.ac.uk/~fisher/mkfilter/は、それが選択したフィルタの種類などに来るとき、それは少なくとも、初心者レベルの信号処理の知識を必要とするかもしれないが、(それもあなたのためのCコードフィルタの実装を生成することができます)なかなか良さそうです


理解するために基本的なフィルタ設計パラメータは、http://dspguru.comからの有用な図です。これはローパス・フィルタ用ですが、ハイパス・ケースでも同じパラメータが適用されます。

enter image description here

+0

非常に参考にしていただきありがとうございます。 私が受け取ったサンプルは、44.1kHzでした。 私は通過帯域と阻止帯域についてはわかりません。 ストップバンドと通過帯域がバンドパスフィルタ用であるかどうかわかりません。 C++では、waveInProcコールバックでデータを受信しました... 基本的にこのオーディオデータは、異なる周波数のサウンドが混在しています。 15kHz(例)のカットオフでこのオーディオデータにハイパスフィルタを適用します。 15khz以上の周波数はwavファイルにのみ保存されます。 – tongy

+1

@tongy:あなたが理解する必要がある重要なことは、完全なまたは*理想的な*フィルタのようなものはありませんということです - 私たちは*ストップバンド*と*の通過帯域*を定義し、これらの間にある理由ですが*トランジションバンド*(上記の例では12〜15kHz)です。適切なフィルター仕様を作成する前に、達成しようとしていることを十分に理解しておく必要があります。 –

+0

Mr. Paul、 ありがとうございます。私は参照してください... 私の理解によると、ハイパスフィルタは通過帯域リップルまたはストップバンドを必要としないと思います。 – tongy

関連する問題