2011-01-22 100 views
0

我正在爲c#.NET中的示波器開發一個應用程序,我在zedgraph控件的幫助下繪製了不同種類的波(正弦,方形等)。 我從示波器獲取數據並將其存儲在1024(字節數組)的緩衝區中,並且必須在運行時計算參數,如時間段,頻率,上升時間,下降時間等。 爲此,我只需要提取整個信號的單個週期。更多的問題是,值不總是上升或下降連續的平均值存儲在像這樣的緩衝區[0,0,0,1,1,2, 3,4,5,5,6,6,6,5,5,4,3,2,1,1,0,0,0 ..........]。信號不斷從機器接收。不確定波浪總是在零附近擺動。 謝謝 Registers Nileshc#中的信號計算頻率.net

回答

2

你可以估計頻率的一個方法。如果你有一個數學庫,可能最簡單的方法是計算FFT並採用最低頻率。

或者,您可以檢查過零點(在平均值附近)。其振盪頻率越快,頻率越高。同樣,極值告訴你很多關於頻率的信息(想想一個正弦曲線的極值和零點是否交替並且間隔均勻)。

還有一種叫做週期變換的變換,但我不記得它太多。我在一本關於尋找歌曲節奏的音樂書中看到了它。

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

另一種方法可能是使用自相關,當它是大表示該功能是「同步」與自己(假設它不會改變形狀以快)。並且應該很容易計算這些最大值之間的距離。

+0

「計算FFT,並採取最低頻率」的每個部件中的波長(以及因此期間)並不意味着什麼。你如何定義最低頻率? – 2011-01-22 15:44:14

0

你可以找出波峯和波谷之間的時間間隔,這會給你一半的特定波長的波長。

alt text

對於圖1中,第一槽是2,所述第一峯值是12找出時間這些點之間服用,你有一半波長。

對於圖2中,相同的原理適用,可以計算出用於將圖表