互相关 - 为什么在删除频谱的镜像部分时 FFT/IFFT 之后会有一个复杂的部分?

信息处理 matlab fft 在家工作 互相关 匹配过滤器
2022-02-06 03:37:21

我想在我的时间序列中检测一个特殊的形状,并应用一个使用互相关的匹配滤波器来增加 SNR。

e = conj(fft(shape,2048));
f = fft(signal,2048);
g1 = real(ifft(e.*f));

但是,在删除FFT结果的后半部分时,由于周期性,那么我的g2仍然有一个小的复杂部分,结果在SNR方面不太好。

_e = e(1:length(e)/2);
_f = f(1:length(f)/2);
g2 = real(ifft(_e.*_f));

互相关

你能解释一下为什么g2中还有一个复杂的部分吗?有没有什么简单的方法可以在删除一半频谱后再次改善信号?或者根本不建议放弃下半场?

1个回答

如果输入信号是实值,则 DFT 返回一个长度为的序列N满足

X[Nn]=X[n]

由于通常绘制频谱的幅度,因此感兴趣的关系是:

|X[Nn]|=|X[n]||X[Nn]|=|X[n]|

当您使用实值信号时,由于这种对称性,人们往往会“忽略”FFT 频谱的后半部分。

但是,如果信号很复杂,那么频谱的两侧都是基本的,因为不再实现对称性。当您在丢弃频谱的一侧ifft 调用该函数时,该函数假设原始 FFT(输入)是非对称的(因为您删除了它的一半),因此它来自的时域序列一定很复杂。这就是为什么在返回时域时会得到复值信号的原因。