1. 从连续到离散:为什么我们需要DTFT?
想象一下,你正在用手机听一首歌。这首歌在现实世界里是连续变化的声波,但你的手机和耳机里的芯片,它们只认识“0”和“1”。要把一首歌塞进手机里,第一步就是采样——每隔一小段时间,就测量一次声音的强度,把连续的声音变成一串离散的数字。这个过程,就是我们常说的“模数转换”。
好了,现在我们手里有了一串数字序列 x[n]。我们想知道,这个序列里都包含了哪些频率的声音?比如,低音鼓的“咚咚”声频率低,人声的频率中等,三角铁的“叮叮”声频率高。在连续信号的世界里,我们用傅里叶变换(FT) 来干这个事,它能告诉我们一个连续信号里各个频率成分的“含量”。
但我们的信号现在是离散的,直接用FT行不通了。于是,离散时间傅里叶变换(DTFT) 就登场了。你可以把它看作是FT在离散世界的“表亲”。它的公式长这样:
X(e^{jω}) = Σ_{n=-∞}^{∞} x[n] * e^{-jωn}
别被这个公式吓到,我来给你翻译一下。X(e^{jω}) 就是我们想知道的频谱,ω 是数字角频率。这个公式的意思就是:把序列 x[n] 的每一个值,都乘以一个对应频率的旋转因子 e^{-jωn},然后把所有结果加起来。这个旋转因子是关键,它就像一个精密的“频率探测器”,当序列 x[n] 的波动节奏和某个频率 ω 匹配时,它们相乘累加的结果就会特别大,这就说明信号里含有这个频率的成分。
我刚开始学的时候,总觉得这个求和从负无穷到正无穷很抽象。其实,对于现实中我们处理的信号,比如一段录音,它总是有限长的。我们可以把它想象成在有限长度之外都是0,这样求和就是有限项了。
DTFT有个非常重要的特性:它计算出来的频谱 X(e^{jω}) 是连续的,并且是以 2π 为周期的。连续好理解,因为频率 ω 可以取任意值。周期性的原因则来自于采样的本质——离散序列在时域是采样的,在频域就会周期重复。这就像你透过一个栅栏看一幅画,你会看到很多重复的片段。
这里有个很实际的坑我踩过。DTFT的频谱是连续的,这意味着理论上我们需要计算无穷多个频率点才能完整描述它。但计算机是“离散”的,它没法存储或处理一个连续的函数。所以,DTFT更像是一个强大的理论工具,帮助我们理解离散信号的频域本质,但直接用它来做实际的数字信号处理,比如用软件分析一段音频的频谱,还差最后一步。
2. 从理论到实践:DFT与DFS的登场
既然计算机没法处理连续的频谱,那很自然的想法就是:我们也在频率上“采样”一下不就行了?就像在时域采样得到离散序列一样,我们在频域也对DTFT得到的连续频谱进行采样。这个想法,直接引出了数字信号处理的绝对核心——离散傅里叶变换(DFT)。
DFT可以简单理解为:对有限长的离散时间序列,在频域进行等间隔采样后得到的结果。 它的公式和DTFT很像,但有一个根本区别:
X[k] = Σ_{n=0}^{N-1} x[n] * e^{-j(2π/N)kn}, k = 0, 1, ..., N-1
看,求和范围变成了从 0 到 N-1


2万+

被折叠的 条评论
为什么被折叠?



