如何在不查看 FFT 的情况下预测混叠/折叠信号的频谱?

信息处理 fft 离散信号 频谱 采样 混叠
2022-02-01 15:01:57

这似乎是一个微不足道的概念,但我无法掌握它。我有一个带有两个复杂正弦曲线的信号,频率分别为 -25MHz 和 17MHz。目前它的采样频率为 64MHz,因此我在 -25MHz 和 17MHz 处得到两个 fft 峰值。如果我将所有其他样本都扔掉,则 17MHz 的组件会切换到 -30MHz,而 -25MHz 的组件会切换到 14MHz。

我知道这是由于混叠/折叠造成的,但为什么这些频率分量会出现在混叠信号中?有没有办法在不查看 fft 的情况下预测混叠信号的频率内容?如果每四个样本被丢弃(即采样频率现在变为 16MHz),我应该得到什么频谱?

2个回答

你对情况的描述是错误的。以 64 MHz 采样的复数信号可以表示从 -32 MHz 到 +32 MHz 的频率,因此在 -25 MHz 和 +17 MHz 处存在音调是可以的。但是,当您抽取两倍时,采样率下降到 32 MHz,频率范围变为 -16 MHz 到 +16 MHz。换句话说,之后您将无法获得 -30 MHz 的信号。

混叠将信号向下移动到新的奈奎斯特区(负和正奈奎斯特频率之间的区域,分别为 -16 MHz 和 +16 MHz)。-25 MHz 比负 Nyquist 频率低 9 MHz,因此上移 32 MHz(Nyquist 区的宽度)至 +7 MHz。+17 MHz 比正 Nyquist 频率高 1 MHz,因此下移 32 MHz 至 -15 MHz。

在此处输入图像描述

上图显示了之前(顶部图)和之后(底部图)的频谱。它是使用以下 Matlab 命令创建的:

sig = exp(j*(1:1000)*2*pi*-25E6/64E6) + exp(j*(1:1000)*2*pi*17E6/64E6);
freq = -32E6:64E6/1000:32E6;
dec = sig(1:2:end);
freqDec = -16E6:64E6/1000:(16E6-1);
subplot(2,1,1)
plot(freq, 20*log10(abs(fftshift(fft(sig)))))
subplot(2,1,2)
plot(freqDec, 20*log10(abs(fftshift(fft(dec)))))

编辑:我看到你在计算混叠频率时基本上有正确的想法。您犯的唯一错误是由于抽取而没有将频率除以 2。因此,-30 MHz 应该是 -15 MHz,而 14 MHz 应该是 7 MHz。

根据您的帖子,您将信号下采样 2 倍,因此您的新混叠频率也应除以该因子。

一般来说:

新采样率 (fs2):32MHz 新奈奎斯特频率:16MHz。混叠频率 fa:7MHz、15MHz 实际频率 fx:-25MHz、17MHz

为了简单起见,我将首先使用正频率。

如果要采样的信号小于新的采样率,您可以将混叠频率计算为:

fa = |fs2 - fx|

因此,如果我们将原始频率 (fx) 视为正值(17MHz 和 25MHz)...

17MHz ---> fa = 32MHz - 17MHz = 15MHz

25MHz ---> fz = 32MHz - 25MHz = 7MHz

由于您要处理负频率,因此必须将负频率处理为:

fa = |-fs2-fx| = |-32MHz - (-25MHz)| = 7MHz

如果您的频率大于新的采样率 (fs2 = 32MHz),您必须修改 fs2 的值。新值是最接近被采样信号频率的 fs2 的整数倍。我将把修改后的值称为 Nfs2。

例如,如果 fx 为 33MHz,您将使用 Nfs2' = (1)*fs2 = 32MHz,因为 32MHz 是 32MHz 到 33MHz 的闭整数倍。

这将产生 fa = |33MHz - 32MHz| = 1MHz

如果 fx 为 63MHz,您将使用 Nfs2 = 64MHz(2*32MHz 最接近 63MHz)。

这产生 fa = |63MHz - 64MHz| = 1MHz