将 fft 输出乘以 Hann 窗口的目的?

信息处理 fft 窗函数 频域
2022-02-06 14:53:55

我目前正在使用一些声学传播模型。我在其中 2 个模型中注意到的一个特征是,在报告时域结果之前,模型的输出通常乘以频域中的 Hann 窗口。

我一直在努力理解这背后的想法,因为我只熟悉在时域中应用的窗口函数。

提供一些背景......这些模型由(据我了解)操作:

  1. 模拟理论矩形光谱(所有频率的相位值相等)。
  2. 然后,模型计算声音在环境中传播时的每个频率的损失。
  3. 通常会返回频域和时域图,以便以直观的方式查看结果(每频率的 dB 损失)。

我假设要将其转换回时域(以显示光谱色散的影响),汉恩窗以某种方式使该信号可见,否则平坦的相位值将导致无意义的时域信号。

  • 任何人都可以简要描述将平面(矩形)光谱与相同大小的 Hann 窗口相乘的 DSP 理论吗?

下面我展示了一些相关的matlab代码。这段代码(据我所知)对信号(phs)进行频移,将频域乘以汉恩窗(hanwin),然后转换回时域fft结果tlpressd用于在结果图中绘制每时间的 dB 传播损耗。循环项只是贯穿环境的所有输出范围。

hanwin=hanning(nf+1);
hanwin=fftshift(hanwin(1:nf)/sum(hanwin(1:nf)));
phs=2*pi*cfreq*time;
if optout == 1
  for irng=1:nrout,
    pressd(irng,:)=fftshift(fft(pressd(irng,:).*hanwin')).*exp(-j*phs);
    timeout(irng,:)=time+rngout(1,irng)/(c0/1000.);
  end
% pressd = complex pressure field, row = range; col = time
tlpressd=-20*log10(max(abs(pressd),1.e-20));

笔记

仅供参考,上面的代码来自Kevin Smith 的 “Monterey-Miami Parabolic Equation”传播模型它将生成的模型的绿色函数解决方案转换为几种视觉表示之一(时间与频率,或频率与深度等)

提供更多上下文(可能还有更多混乱)。如果我用我选择的任何时域信号替换变量hanwin,则代码块的末尾提供了该信号与模型计算的传播效应的卷积(即它模拟了传播对所提供信号的影响)。很明显,我正在将 Hann 窗口与我的模型输出进行卷积......但我不知道这背后的信号理论是什么。

1个回答

任何人都可以简要描述将平面(矩形)光谱与相同大小的 Hann 窗口相乘的 DSP 理论吗?

在不提及实际模型及其目的的情况下,唯一可以说的是,由于卷积定理,所描述的乘法会导致某种形式的数字滤波器。这就是关于使用任何类型的函数“调制”频域的全部内容。

但是,基于对抛物线方程可以通过离散傅立叶变换求解的方式的出色阐述,似乎在空间和频域中执行了乘法以“优雅地”隔离信号的特定部分。

现在,作者似乎表明进行乘法运算是为了"...avoid aliasing...",但我看不出这些操作的结果如何在以下情况下导致混叠:

  1. 一个是完全控制模拟的一切
  2. 第一个“平面”(在源处生成的那个)将仅包含形成所需频谱的谐波,并且无论如何在其他地方为零。

因此,我看不出额外的谐波是如何在集成步骤之间潜入以需要隔离它们的。

因此,更可能的原因可能是能够以一种优雅的方式“隔离”(或专注于)域的一部分,而不是将其设置为零。

希望这可以帮助。