是否可以使用 FFT 信息来获取 DTFT?

信息处理 fft 自由度
2022-02-13 20:31:43

如果x[n]={14,14,14,14} 得到的 DTFT 是

(1)12exp(32ω)(cos(32ω)+cos(12ω))

我正在寻找一种通用的计算方法来获得通用的 DTFT 公式,它几乎适用于所有情况,不涉及手动做任何事情。假设使用了足够的 bin 并进行了适当的零填充,FFT 幅度和相位结果中是否有足够的信息来计算 DTFT?

重申一下,假装你只有下图。我在问你是否可以以某种方式推导出公式方程(1)没有做任何事情,只是看那个图表。我问这是否可能仅使用 FFT 信息。

在此处输入图像描述

2个回答

你的问题有点难以理解。鉴于序列的 DFT,您似乎正在请求 DTFT 的封闭形式解决方案。这当然是可能的。如果没有时域和频域混叠,那么我们可以简单地将 IDFT 公式应用于样本(或等效地执行 IFFT)。在此之后,我们可以将 DTFT 公式应用于时域样本。这可能不是您想要的简化形式的答案,但它是 DTFT 的封闭形式表达式,可以在任何时候进行评估。此外,一个非常好的计算机代数系统(例如,Maple、Mathematica 等)可能能够将其简化为您所要求的形式(满足您不需要手动计算的要求)。

DFT 是 DTFT 的频域采样版本。FFT 计算 DFT。因此,您可以简单地应用香农-奈奎斯特采样定理并使用 sinc 函数对 DFT 的点进行插值,

XDTFT(f)=k=XDFT[k]sinc(fk)=k=0N1XDFT[k]sin(π(fk))Nsin(πN(fk))

在哪里sinc(x)=sin(πx)πx. 该表达式等于您的简化表达式(即,它在每个点的计算结果都相同)。该表达式假定一个单位长度的采样间隔(即,T=1)。这至少提出了一种从 DFT 样本中插值 DTFT 的方法。

寻找一个精确的简化表达式是困难的,因为不同的思想流派会以不同的方式简化它。谁能说涉及三角函数的表达式比涉及复指数的表达式更好?例如,是不是表达式

XDTFT(f)=14+14exp(j2πf)+14exp(j4πf)+14exp(j8πf)
你到底在追求什么?如果我们使用第一段中的方法,这正是我们会得到的。取 DFT 的 IFFT,然后应用 DTFT 的公式。计算机程序可以完成所有这些,并且可以在任何时候评估这个表达式f,不需要手动计算。

取决于您对“几乎所有情况”的要求有多严格。如果您可以对 DTFT 公式的形式做出一些简化假设,那么您可以使用 matlab 中的 lsqnonlin() 或类似的曲线拟合算法,将函数拟合到数据中。例如,如果您有 N 点 FFT,并且您知道 DTFT 必须采用以下形式i=1Maiewi,如果 N >> M,那么 lsqnonlin() 可能会解决未知数aiwi. 在所示示例中,您有 64 个已知数据点(32 点复 FFT),并且将求解 8 个未知数(2 个项,每个项具有复振幅和复相位),因此它可能会起作用。如果 N 可以与 M 处于同一阶,或者如果 DTFT 的形式完全是任意的,那么可能不会。