2016-05-29 34 views
0

我想在Matlab中生成無限脈衝陣列(在這種情況下爲雙曲正割脈衝),如this figure生成無限脈衝陣列(Matlab)

嘗試:

所以,我想在繪製時域的實際脈衝序列,以及其在傅立葉域頻譜(使用fft)。當我定義了時間和頻率軸:

t = [-tspan : dt : tspan]; 
w = [-1/dt : 1/tspan : 1/dt] 

如果我代替inf的時間網格的跨度,我會超過變量的最大數量,並得到錯誤。那麼,我怎樣才能產生給定函數的脈衝無限排列 (比如u(t)=sech(t/a))呢?

+0

我不明白你爲什麼需要一個無限的脈衝陣列。顯然,由於內存限制,MATLAB無法爲您存儲無限數量的脈衝。 – rayryeng

+0

是的,的確如此。但是有沒有辦法模擬這種情況?因爲我的帖子中的圖是在Matlab中生成的,文本顯示它顯示了無限的脈衝陣列(只顯示了7個)。然後在頻域中,這個無限脈衝串的頻譜將由尖峯(狄拉克德爾塔函數)組成,這正是理論上所期望的。 – Merin

+0

如果你想繪製它們,那麼你可以獨立繪製它們。 – percusse

回答

0

您不能通過在每個時間點存儲振幅來明確表示無限的一組脈衝,因爲這需要無限的存儲器。相反,您可以定義一個函數f(t),該函數返回時間點t處的脈衝序列的振幅。你可以認爲f隱含地定義了一個無限脈衝序列。要繪製它,只需選擇您的時間限制並在這些範圍內的某些點評估f(t)

對於頻譜,您有幾個選項。一個是分析推導它。在這種情況下,您可以定義一個函數F(w),它返回頻率'w'處的頻譜值。你可以同樣認爲這是無限的,並以相同的方式繪製它。

另一種選擇是用數字計算光譜。在這種情況下,您將生成f(t)的樣本。確保你的採樣率高於奈奎斯特頻率。然後,使用一些函數來計算採樣信號的頻譜。一般來說,這是一個近似值,因爲您的採樣信號只能有限長度。隨着長度變短,近似值變得不準確。此外,頻譜中可能存在代表採樣信號開始/結束處的不連續性的僞像,但不反映「真實」信號。有兩種常見的方法可以緩解這些問題:1)使用長採樣信號(但顯然它不能無限長)。 2)使用窗口功能,減少邊緣效應。對於像您這樣的週期性信號,採樣區域應該跨越整數個週期。

+0

這是正確的。還有人告訴我,如果時間軸是兩個連續脈衝之間的時間間隔的整數倍(即重複率'T'),那麼DFT的週期性邊界條件將確保脈衝串確實是無限的,即使你有一個有限數量的脈衝。所以我定義了我的't = [ - N * T:dt:N * T]',但是我沒有像圖片那樣得到尖銳的狄拉克尖峯。當我使用不是T的倍數的跨度時,我再次獲得相同的情節形狀。這是爲什麼? – Merin

+0

@Merin它是什麼樣子呢? – user20160

+0

在[此圖片](http://i.imgur.com/hh5qYYt.jpg)中,第一組爲1個脈衝,第二組爲一個脈衝對,最後一組爲無限數組。當我做我的情節時,光譜看起來像第二組。我沒有像最後一幅圖像那樣產生尖銳的狄拉克尖峯。 – Merin