使用功率谱 FFT 的自相关

信息处理 fft 自相关 功率谱密度
2022-02-16 03:01:58

我有一大块需要使用 FFT 方法进行自相关的数据(样本)。所有数据都是真实的,介于 -1 和 +1 之间。我所做的如下:

  1. 零填充窗口的长度等于样本的长度。
  2. 结果的 FFT 从 1
  3. 2 的结果有实部和虚部。我用它们通过 Re*Re + Im*Im 找到功率谱密度。
  4. 采用快速傅里叶逆变换。

现在这是我的问题:第 4 部分的结果包含实部和虚部。它的大小是否等于自相关结果?如果是这样,由于我的输入包含正值和负值,第 4 部分的 Result 的大小意味着自相关结果不能为负,这没有意义。

还是应该只取第 4 部分结果的实数部分作为自相关结果?我的输入是真实的,所以自相关不应该有任何虚部,对吧?

1个回答

原则上,您正在做正确的事情。除非存在编码错误,否则第 4 步应该会产生真实的结果。有时,由于数字噪声,您会添加一些剩余的虚部,但如果有的话,应该非常小。

这是一个例子

%% random signal of length n
n = 128;
x = rand(n,1);
% zero pad
x = [x; zeros(n,1)];
% fft
fx = fft(x);
% mag sqaured
fa = fx.*conj(fx);
% inverse FFT
a = ifft(fa);
% plot
plot(-n+(1:2*n),circshift(a,-n));
answer = {'no','yes'};
fprintf('Is a Real?: %s \n',answer{isreal(a)+1});