簡體   English   中英

通過numpy FFT進行數值微分

[英]Numerical differentiation via numpy FFT

我正在學習如何使用numpy進行快速傅里葉變換區分。 在下面的代碼中,我創建了一個簡單的正弦函數並嘗試獲得余弦。 結果顯示在圖像中,似乎有一個歸一化因素,盡管閱讀文檔但我無法理解,這使我無法獲得正確的結果。

你能告訴我如何擺脫正常化因素,或者我是否以不同的方式失敗? 還請解釋為什么當陣列長度為奇數時,奈奎斯特頻率不存在。

x = np.arange(start=-300., stop=300.1, step=0.1)
sine = np.sin(x)

Y = np.fft.rfft(a=sine, n=len(x))
L = 2.*np.pi #period
N = size(Y)

for k, y in enumerate(Y):
    Y[k] *= 2.*np.pi*1j*k/L

# if N is even, the last entry is the Nyquist frequency.
#if N is odd, there it is not there.
if N%2 == 0:
    Y[-1] *= 0.

cosine = np.fft.irfft(a=Y, n=len(x))

代碼輸出

你能告訴我如何擺脫正常化因素,或者我是否以不同的方式失敗?

為術語2.*np.pi*1j*k/L添加np.exp() 這個術語似乎是相位旋轉的量,所以它們的范數應該是1。

for k in range(N):
    Y[k] *= np.exp(2.*np.pi*1j*k/L)

還請解釋為什么當陣列長度為奇數時,奈奎斯特頻率不存在。

這是離散傅立葉變換的本質。 簡而言之,當采樣點的數量N是奇數時,沒有等於N / 2的整數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM