我试图准确了解如何对 DTFT 进行采样以获得 DFT 的工作原理。我试图分析的信号是见下文。
采用 DTFT,我们有
我接下来在 MATLAB 中实现了这个:
x = [1 2 3 2 1];
N = size(x,2);
w = -pi:0.01:pi;
X_DTFT_computational = freqz(x,1,w);
X_DTFT_analytical = 3 + 4*cos(w) + 2*cos(2*w);
接下来,我以两种方式计算 DFT: 1. 对原始信号应用 FFT 。2. 我对 DTFT 进行采样。
实现这一点的代码如下:
% FFT of x
X_DFT_computational = fftshift(fft(x))
% DFT = Sampled DTFT
X_DFT_analytical(1) = 3 + 4*cos(-4*pi/N) + 2*cos(2*(-4*pi/N));
X_DFT_analytical(2) = 3 + 4*cos(-2*pi/N) + 2*cos(2*(-2*pi/N));
X_DFT_analytical(3) = 3 + 4*cos(0) + 2*cos(2*(0));
X_DFT_analytical(4) = 3 + 4*cos(2*pi/N) + 2*cos(2*(2*pi/N));
X_DFT_analytical(5) = 3 + 4*cos(4*pi/N) + 2*cos(2*(4*pi/N));
FFT 的幅度确实给了我正确的结果。但仅绘制 FFT 会给我一个复杂的信号(图表显示实部)。
既是实数又是对称的时,为什么这个信号会给出复数 FFT ?