具有负 fft 值的傅里叶变换和滤波频率

Posted

技术标签:

【中文标题】具有负 fft 值的傅里叶变换和滤波频率【英文标题】:Fourier transform and filtering frequencies with negative fft values 【发布时间】:2015-01-21 11:24:02 【问题描述】:

我正在寻找周期性信号中最丰富的频率。 我试图了解如果我对周期性信号执行傅立叶变换并过滤具有负 fft 值的频率会得到什么。

换句话说,图 2 和图 3(见下文)的轴表示什么?我在 fft 转换的信号上绘制频率(周期/秒) - y 轴上的负值是什么意思,我只对那些感兴趣是否有意义?

import numpy as np
import scipy

# generate data
time = scipy.linspace(0,120,4000)
acc = lambda t: 10*scipy.sin(2*pi*2.0*t) + 5*scipy.sin(2*pi*8.0*t) + 2*scipy.random.random(len(t))
signal = acc(time)

# get frequencies from decomposed fft
W =  np.fft.fftfreq(signal.size, d=time[1]-time[0])
f_signal = np.fft.fft(signal)

# filter signal
# I'm getting only the "negative" part!
cut_f_signal = f_signal.copy()
# filter noisy frequencies
cut_f_signal[(W < 8.0)] = 0
cut_f_signal[(W > 8.2)] = 0

# inverse fourier to get filtered frequency
cut_signal = np.fft.ifft(cut_f_signal)

# plot
plt.subplot(221)
plt.plot(time,signal)
plt.subplot(222)
plt.plot(W, f_signal)
plt.subplot(223)
plt.plot(W, cut_f_signal)
plt.subplot(224)
plt.plot(time, cut_signal)
plt.show()

【问题讨论】:

顺便说一句,频域中的矩形滤波器(将 bin 归零)是一种非常嘈杂的非平坦滤波器,可能会产生大量纹波和振铃。 【参考方案1】:

实值输入信号的 FFT 将产生共轭对称结果。 (这只是数学上最有效的方式。)因此,对于仅真实数据的 FFT 结果幅度,负频率只是正频率的镜像副本,因此在分析结果时可以忽略。

但是,如果您想进行逆运算并计算 IFFT,则需要向 IFFT 提供频率数据的共轭对称负半部分(或上半部分,高于 Fs/2),否则您的 IFFT 结果将结束产生一个复杂的结果(例如,具有非零虚数 (sqrt(-1)) 分量,在处理基带实际数据时很少需要这种结果)。

如果您想要过滤 FFT 数据并最终从 IFFT 中获得真实结果,则需要对称地过滤正负频率以保持所需的对称性。

FFT 还会产生一个复数结果,其中每个结果箱的分量(实部和虚部)的值和符号表示分量基向量(复正弦或实余弦加实正弦)的相位和幅度组件)。如果相同的结果为正,任何负值都表示相位旋转。

【讨论】:

感谢您的输入,但是,我的问题不是关于负频率值(这是正频率值的镜像) - 在我的 x 轴示例中,而是关于负频率值来自 FFT 的 y 轴 - 它们是什么意思? 关于已签名复数 FFT 结果的答案已更新。 也感谢关于对称过滤噪声的提示【参考方案2】:

正如@hotpaw2 在上面的评论中所写,对时域中的真实信号执行 FFT 的结果会在频域中生成复数值。

你的 plot 命令的输入值 f_signal 是一个复数值向量。

plt.subplot(222)
plt.plot(W, f_signal)

这会导致无意义的输出。 您应该绘制 f_signal 的绝对值。 如果您对相位感兴趣,您也应该绘制角度。 在 Matlab 中,这看起来像这样:

% Plot the absolute values of f_signal
plot(W, abs(f_signal));
% Plot the phase of f_signal
plot(W, (unwrap(angle(f_signal)));

【讨论】:

以上是关于具有负 fft 值的傅里叶变换和滤波频率的主要内容,如果未能解决你的问题,请参考以下文章

二维傅里叶变换滤波/降噪

非周期信号的傅里叶变换

频率域滤波

选带傅里叶变换(zoom-fft)

傅里叶变换

5.10 图上的傅里叶变换和逆变换