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

标签 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 之间z_b)

最佳答案

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

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

enter image description here

关于matlab - 为什么在执行离散傅里叶逆变换时将指数视为连续变量不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45548601/

相关文章:

algorithm - 向量化搜索包含给定子排列(带重复)的排列(带重复)

matlab - 如何在matlab中制作基于百分比的随机数生成器?

android - 如何解释 FFT 的输出并提取频率信息

r - 将不规则网格插入到规则网格

python - 添加或减去 2 条插值曲线的最佳方法是什么?

matlab - 是否可以检查重载 eq 的类的句柄相等性?

matlab - 在Matlab中加载文件.dat时出错

signal-processing - 为什么我的卷积结果在使用 FFT 时会发生偏移

python - 倒谱法的基频

python - scipy 0.11.0 到 0.12.0 改变了线性 scipy.interpolate.interp1d,打破了我不断更新的插值器