为什么这种实对称信号的 DFT 会导致复值系数?

信息处理 matlab fft 自由度 文件
2022-01-27 05:46:04

我试图准确了解如何对 DTFT 进行采样以获得 DFT 的工作原理。我试图分析的信号是x(n)见下文。

信号 x

x(n)=δ(n±2)+2δ(n±1)+3δ(n)

采用 DTFT,我们有

X(ω)=i=x(n)ejω=(ej2ω+ej2ω)+2(ejω+ejω)+3=2cos(2ω)+2(2cosω)+3=3+4cosω+2cos(2ω)

我接下来在 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. 对原始信号x(n)应用 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));

绘制 DFT(同时显示 DTFT 以进行比较),我有 密度泛函

FFT 的幅度确实给了我正确的结果。但仅绘制 FFT 会给我一个复杂的信号(图表显示实部)。

x(n)既是实数又是对称的时,为什么这个信号会给出复数 FFT ?

1个回答

您将信号向量定义为x = [1 2 3 2 1]由于 DFT 定义为

X[k]=n=0N1x[n]ej2πnk/N

该命令fft(x)计算信号的 DFT

x[n]=δ[n]+2δ[n1]+3δ[n2]+2δ[n3]+δ[n4]

该信号关于 不对称,并且不等于您计算 DTFT 的信号。n=0

如果要计算信号的 DFT

x[n]=δ[n+3]+2δ[n+1]+3δ[n]+2δ[n1]+δ[n3]

(使用 )中定期继续它n[0,N1]N=5

x = [3 2 1 1 2]

正如预期的那样,这会产生实值和对称的 DFT:

X = fft(x);
X =

   9.00000 2.61803 0.38197 0.38197 2.61803