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......]. 信号はマシンから継続的に受信されます。波が常にゼロ付近で振動しているとは限りません。よろしくお願いします
2 に答える
頻度はいくつかの方法で見積もることができます。数学ライブラリがある場合、おそらく最も簡単なのは、FFTを計算し、最低の周波数を取ることです。
または、ゼロ交差(平均値付近)を確認することもできます。振動が速くなると約0になり、周波数が高くなります。同様に、極値は周波数について多くのことを教えてくれます(極値とゼロが交互になり、等間隔に配置されている正弦波を考えてみてください)。
生理変換と呼ばれる変換もありますが、あまり覚えていません。曲のテンポを見つけるための音楽の本で見ました。
http://www.cs.berkeley.edu/~vazirani/s09quantum/notes/lecture4.pdf
別の方法は、自己相関を使用することです。それが大きい場合は、関数がそれ自体と「同期」していることを意味します(形状が高速に変化しないと仮定)。そして、これらの最大値の間の距離を簡単に計算できるはずです。
波の山と谷の間の時間間隔を調べると、その特定の波の波長の半分が得られます。
グラフ 1 の場合、最初の谷は 2、最初の山は 12 です。これらの点の間にかかる時間を調べると、波長が半分になります。
グラフ 2 についても、同じ原理が適用されます。グラフの各セクションの波長 (したがって周期) を計算できます。