如何在 DC 周围翻转频谱?

信息处理 matlab fft 傅里叶变换 频谱 频率
2022-02-13 00:40:12

是否可以在直流附近翻转信号的频谱?我有一个简单的谱图(MATLAB 代码):

spectrum =   [-1+4i 0+3i 1+2i 2+1i 3+0i 4-1i 5-2i 6-3i 7-4i 8-5i]
timeDomain = ifft(spectrum);

我查看了这个网站(http://www.dsprelated.com/showarticle/51.php),给出的证明表明这可以通过 3 种方式完成:

  1. 反转 Q 通道 (14)
  2. 交换 I 和 Q 通道 (15)
  3. 反转 I 通道 (16)

我在信号上尝试了这 3 种方法:

1)反转Q通道

negQtd   = real(timeDomain) - 1j * imag(timeDomain);
negQSpec = fft(negQtd)

输出:

[-1-4i 8+5i 7+4i 6+3i 5+2i 4+1i 3+0i 2-1i 1-2i 0-3i]

2) 交换 I 和 Q 通道

swapTD   = imag(timeDomain) + 1j * real(timeDomain);
swapSpec = fft(swapTD)

输出:

[4-1i -5+8i -4+7i -3+6i -2+5i -1+4i -0+3i 1+2i 2+1i 3+0i]

3) 反转 I 通道

negItd   = -1 * real(timeDomain) + 1j * imag(timeDomain);
negISpec = fft(negItd)

输出:

[1+4i -8-5i -7-4i -6-3i -5-2i -4-1i -3-0i -2+1i -1+2i -0+3i]

这些中的每一个都会翻转信号的频谱,但它也会修改频谱:

1) 反转时域 Q 通道也否定/反转频域虚部。

2) 交换 I 和 Q 通道也会交换频域实部和虚部。

3) 反转时域 I 通道也否定/反转频域实部。

有没有其他方法可以简单地翻转 DC 周围的频谱,或者我应该尝试两步过程?

1个回答

您在问题中提到的文章处理基带处理中的频谱反转不是关于频率轴的简单反转,而是关于频率轴的反转频域中的共轭。这是必要的,因为在几个转换阶段由于不同的混合约定,可以交换上边带和下边带,并且两个边带呈现共轭对称性,因为传输的信号是实值的。因此,可以通过反转频率轴通过额外的复共轭(在频域中)从另一个获得一个边带。

这种频域的反相和共轭过程对应于时域复基带信号的复共轭,相当于简单的将分量反相。由于度的相移无关紧要,因此可以等效地反转分量。度的相移对应于在时域中与的乘积,如果可以容忍这种相移,您可以获得交换通道的额外选项。Q180I90jIQ

如果您想要在没有共轭的情况下纯粹反转频率轴,那么您确实需要反转相应时域信号的时间轴(正如@curiousStudent 的评论中所指出的那样)。幸运的是,这在实践中通常不需要,因为这在实时系统中不容易做到。

最后一点,您问题中的所有三个选项确实会翻转DC 周围的光谱幅度,只是相位在所有三种情况下表现不同。