2011-10-17 23 views
1
方波

我正在分配到在20kHz的採樣頻率上的方波的頻率500Hz的其振幅交替0和20生成對於DFT

我之間的執行200點DFT使用C++和我已經想出瞭如何編碼DFT方程,我的問題是我在代碼中使用for循環代表方波時遇到問題。

我真的仍然感到困惑的是如何該方波的許多週期將是我的200點樣本。

感謝

+0

問題是什麼? – user807566

回答

0

您的方波的一個週期將需要1/500秒。每個樣本將是1/20000秒。一個簡單的劃分應該告訴你每個方波將會有多少個樣本。

另一部會告訴你有多少波將適合你200點窗口。

1

方波的週期是20000/500=40點,所以你必須在方波正好5個週期的200點樣品(200/40=5)英寸

0

如果採樣頻率爲20000赫茲,你有一個方波頻率500赫茲的,這基本上意味着,你將有每秒你的波,這意味着你將有每20,000個樣本在500次循環的500個週期。這意味着每個波形週期需要40個樣本(或點),所以如果您有200個點,這意味着您的DFT內應該有5個方波週期。

0

您可以確保你通過在你的計算單位做你計算正確。所以期間有維度時間,Hertz維度爲1.0 /時間,樣本是無量綱的。 以編程方式,您可以使用boost.units執行此操作。它會在編譯時檢查你的單元,如果你犯了一個錯誤,會給你一個錯誤。

它也將進入錯誤的單位到您的代碼停止你的用戶。例如,通過輸入20,而不是20000頻率(以爲你是kHz進行測量)

你的界面則是像

using namespace boost::units; 
set_period(quantity<si::time> period); 

用戶必須以秒爲單位輸入時間,

set_period(5*si::seconds)