2011-01-22 6 views
0

私はオシロスコープ用のアプリケーションをC#.NETで開発しています。私はzedgraphコントロールの助けを借りてさまざまな種類の波(正弦波、方形波など)を描いています。 オシロスコープから値を取得し、サイズ1024(バイト配列)のバッファに格納し、実行時に期間、頻度、立上り時間、立下り時間などのパラメータを計算する必要があります。この目的のために 私は全体の信号の1つのサイクルを抽出する必要があります。より多くの問題は、常に値が上昇または下降し続けていないということです。平均値はこのようなバッファに保存されます[0,0,0,1,1,2、 3,4,5,5,6,6,6,5,5,4,3,2,1,1,0,0,0 ..........]。信号は機械から連続的に受信されます。 波が常にゼロ付近で振動するかどうかはわかりません。 ありがとう よろしくお願いします。 NileshC#で信号の周波数を計算する

答えて

2

頻度を数多く推定できます。おそらく最も簡単なのは、数学ライブラリをお持ちの場合は、FFTを計算して最も低い周波数を取ることです。

また、ゼロクロッシング(平均値付近)を確認することもできます。周波数が速くなるほど周波数は高くなります。同様に、極値は周波数について多くのことを教えてくれます(極値とゼロが交互にあり、均等に間隔を置いている正弦曲線を考えてください)。

期間変換と呼ばれる変換もありますが、あまり覚えていません。私は曲のテンポを見つけるための音楽についての本でそれを見ました。

http://www.cs.berkeley.edu/~vazirani/s09quantum/notes/lecture4.pdf

別の方法は、自己相関を使用するかもしれないし、それが大きい場合には(それは高速に形状を変更しないと仮定して)関数は、それ自体で「同期」であることを意味します。これらの最大値の間の距離を計算することは容易でなければならない。

+0

「FFTを計算し、最も低い周波数を取る」の各セクションの波長(したがって期間)を計算することができます適用され、グラフ2の場合

、何の意味もありません。どのように最低周波数を定義しますか? –

+0

?離散した離散スペクトルを持つ信号の最低周波数は明確に定義されており、取得が容易です。 – AbstractDissonance

0

波と波の間の時間間隔を知ることができます。これは、特定の波の半分の波長を与えます。グラフ1のために

alt text

、最初のトラフは、最初の家紋は12がこれらの点の間の服用時間を見つけて、あなたが半波長を持っている、2です。同じ原理は、あなたがグラフ

関連する問題