为什么在执行逆离散傅立叶变换时将索引视为连续变量不起作用?
Why does treating the index as a continuous variable not work when performing an inverse discrete Fourier transform?
我有一组点描述复平面中的一条闭合曲线,称之为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
和 z_b
)
重点是当 n
是整数时,您有一些正交的主要函数,可以作为 space 的基础。当 n
不是整数时, 式中的指数函数不正交。因此,基于这些非正交基的函数表达式并没有您预期的那么有意义。
对于正交情况,您可以看到以下示例(来自 here)。可以查,有两个n_1
和n_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_a
和 z_b
)
重点是当 n
是整数时,您有一些正交的主要函数,可以作为 space 的基础。当 n
不是整数时, 式中的指数函数不正交。因此,基于这些非正交基的函数表达式并没有您预期的那么有意义。
对于正交情况,您可以看到以下示例(来自 here)。可以查,有两个n_1
和n_2
不是整数,后面的积分不再为零,不正交。