为什么在执行逆离散傅里叶变换时将索引视为连续变量不起作用?

时间:2017-08-07 13:51:08

标签: matlab fft interpolation

我有一组描述复杂平面中闭合曲线的点,称之为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_a和{{1之间}})

1 个答案:

答案 0 :(得分:3)

关键是当n为整数时,您有一些正交的主要函数,可以作为空间的基础。当n不是整数时,公式中的指数函数不是正交的。因此,基于这些非正交基的函数的表达与您预期的一样没有意义。

对于正交性情况,您可以看到以下示例(来自here)。您可以检查,您可以找到两个不是整数的n_1n_2,以下积分不再为零,并且它们不是正交的。

enter image description here