仅使用 FFT 计算 IFFT?

信息处理 IFFT
2022-01-27 04:54:36

说你开始A={3,1,0,0}, 运行fft()并结束B={2,3+j,4,3j}.

需要采取哪些具体步骤才能获得A={3,1,0,0}再次使用一些预先计算B, 那么fft(), 那么可能是在获得之前的计算后步骤A? 我听说这是可能的,但还没有弄清楚如何。

2个回答

我们想做逆DFT:

x(k)=1Nny(n)ej2πkn/N,
但只能做正向DFT。所以让我们试着让它“看起来”像一个正向 DFT。请注意,我们希望复指数中有一个减号。我们可以通过复共轭来介绍它:
X(ķ)¯=1ñn是的(n)¯e-j2πķn/ñ,
现在开始看起来像一个正向 DFT!所以配方是:

  1. 复共轭我们想要逆 DFT 的给定序列
  2. 计算其前向 DFT
  3. 计算结果的复共轭。

这为您提供了原始序列的逆 DFT。

(请注意,我在比例因子上作了一些欺骗以使其更容易!)

除了 Atul 的想法,您还可以利用 DFT 的时间反转特性:

N = 10;

x = randn(N, 1) + 1j*randn(N,1);

X = fft(x);

x2 = 1/N*fft(X);
x2 = x2(1+mod(-(0:N-1), N));

subplot(2,1,1);
plot(real(x), 'ob')
hold on;
plot(real(x2), 'x-r');
hold off;

subplot(2,1,2);
plot(imag(x), 'ob')
hold on;
plot(imag(x2), 'x-r');
hold off;

在此处输入图像描述

逆 DFT 等于正向 DFT,但结果是时间反转的。请注意,在离散域中,时间反转不仅仅是一个简单的“从后向前读取”,而是对应于读取第一个元素,然后从后向前读取。另请参见此处