【发布时间】:2018-04-19 15:45:22
【问题描述】:
我无法解释 Python 中矩形脉冲的傅里叶逆变换的结果。我正在使用库 numpy.fft 中的函数 irfft。
这是我的代码:
import numpy as np
import matplotlib.pyplot as plt
n_on = 100
n_off = n_on
Y = np.concatenate(( np.ones(n_on), np.zeros(n_off) ))
y = np.fft.irfft(Y)
plt.figure()
plt.subplot(131)
plt.plot(Y, '.')
plt.title("Y")
plt.subplot(132)
plt.plot(y)
plt.title("y")
plt.subplot(133)
plt.plot(np.fft.ifftshift(y))
plt.title("ifftshift(y)")
plt.grid()
因为我想模拟一个以原点为中心的矩形脉冲(信号 Y),所以我使用 irfft 函数对其进行逆变换,因为我知道时域信号是一个实函数(一个 sinc 函数以原点为中心),这就是信号 y。但是看看我是如何得到某种 fftshifted 信号而不是得到正确的 sinc 信号的,这就是我为什么要对绘制最右边信号的结果进行 ifftshift 以获得更合适的 sinc 函数的原因。
问题是,在使用 irfft 时获得 sinc 的 fftshift 版本是否合理?我在 irfft 的文档中没有遇到任何让我期待的东西。我真的不知道这是 irfft 函数的正确行为还是我做错了什么。
【问题讨论】:
标签: python numpy signal-processing fft dft