生成原始波形是否需要对称 FFT 结果的两半?

信息处理 fft
2022-02-12 05:40:44

对纯实信号执行 FFT 会产生对称结果。我想重新创建电源嗡嗡声以主动从我的信号中减去它,但是:50 Hz

  • 是否需要 FFT 结果的两半来执行此操作?
  • 只使用对称 FFT 结果的一半有什么缺点吗?
1个回答

您可以完美地使用 ,这是属于长度为的共轭对称DFT的一半Xh[k]Xf[k]x[n]N

当然,这样做时,您必须将半长 DFT对称地填充到全长 DFT ,这对于从其适当长度 DFT进行非混叠重建显然是必要的长度为 N。Xh[k]Xf[k]x[n]Xf[k]

请注意,在从对称半期间,第一个样本不重复,其余样本镜像,它们的相位被否定(即它们是共轭的),其中是半长 DFT的长度。Xf[k]Xh[k]Xh[0]Xh[1]Xh[M1]MXh[k]

一半大小的 DFT的长度由以下给出: 如果信号(或其自然 DFT的)长度偶数,,否则,如果奇数MXh[k]Xf[k]NM=1+N2=N+22N M=1+N12=N+12

同样,当为偶数时,半长 DFT 的最后一个样本不重复,当为奇数时,最后一个样本共轭镜像形成全长 DFT,如下 Matlab/Octave 代码示例:NXh[M]NXh[M]Xf[k]

x = [1:8];      % N = 8 , a signal of length N = 8 (even)
X = fft(x,8);   % X[k] is the natural DFT of x[n]
Xh = X(1:5);    % M = (8+2)/2 = 5, also matlab indexing starts from k=1
Xf = [ Xh conj(Xh(end-1:-1:2))];    %N:even => Xh[0] and Xh[5] not repeated
xr = ifft(Xf,8); % reconstruct the original signal from Xf[k]
xr = 1     2     3     4     5     6     7     8

正如预期的那样。