2017-08-07 85 views
2

我有一組描述複平面中閉合曲線的點,稱之爲Z = [z_1, ..., z_N]。我想插入這條曲線,並且由於它是週期性的,所以三角插值似乎是一個自然的選擇(尤其是因爲它的精度提高了)。通過執行FFT,我們得到的傅里葉係數:爲什麼在執行離散傅里葉逆變換時將索引視爲連續變量不起作用?

F = fft(Z); 

在這一點上,我們可以得到Z回由式(其中1i是虛數單位,我們用(k-1)*(n-1)因爲MATLAB索引從1開始)

    N 
    Z(n) = (1/N) sum F(k)*exp(1i*2*pi*(k-1)*(n-1)/N), 1 <= n <= N. 
       k=1 

我的問題

有什麼理由n必須爲整數?大概,如果我們將n視爲1和N之間的任何實數,我們將只在插值曲線上得到更多點。 這是真的嗎?例如,如果我們想雙倍積分的數量,我們可以不設置

    N 
    Z_new(n) = (1/N) sum F(k)*exp(1i*2*pi*(k-1)*(n-1)/N), with n = 1, 1.5, 2, 2.5, ..., N-1, N-0.5, N 
       k=1 

新的點當然只是受到一些插值錯誤的影響,但它們會相當準確,對嗎? 我問這個問題的原因是因爲這種方法不適合我。當我試圖做到這一點時,我得到了一些亂七八糟的問題,這是毫無意義的。


(順便說一句,我知道我可以使用interpft()命令,但我想只有在曲線的某些區域z_az_b之間添加點,例如)

回答

3

重點是當n是整數時,您有一些主要功能是正交的並且可以作爲空間的基礎。當,n不是整數時,公式中的指數函數不是正交的。因此,基於這些非正交基礎的函數表達式並沒有像你期望的那麼有意義。

對於正交情況,您可以看到以下示例(從here)。正如你可以檢查,你可以找到兩個不是整數的n_1n_2,下面的積分不再是零,它們也不是正交的。

enter image description here

+0

哦,這是一個很好的答案。非常感謝! (我知道後續問題有時很煩人,但是,)你能否建議一種方法來添加點,就像我試圖以實際工作的方式在這裏做的那樣? – Alex

+0

答案是肯定的,你可以添加點,並在這些離散頻率上插入。如果您有可以用這種形式寫入的節點(即,以某種方式均勻間隔),請查看'czt'函數。否則,你正在尋找的可能是一個非統一的FFT。 – CKT