频域信号通过逆傅里叶变换恢复成时域信号
flyfish
import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft, ifft
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 设置参数
t = np.linspace(0, 1, 1000, endpoint=False) # 时间范围 0 到 1 秒,1000 个采样点
# 创建一个复杂波形:包含 50 Hz 和 120 Hz 的正弦波
y = np.sin(2 * np.pi * 50 * t) + 0.5 * np.sin(2 * np.pi * 120 * t)# 绘制原始波形
plt.figure(figsize=(14, 8))plt.subplot(3, 1, 1)
plt.plot(t, y)
plt.title('原始波形')
plt.xlabel('时间 (秒)')
plt.ylabel('幅度')# 计算傅里叶变换
yf = fft(y)
xf = np.fft.fftfreq(len(t), t[1] - t[0])# 绘制傅里叶变换的结果
plt.subplot(3, 1, 2)
plt.stem(xf, np.abs(yf), 'b', markerfmt=" ", basefmt="-b")
plt.title('傅里叶变换后的频域表示')
plt.xlabel('频率 (Hz)')
plt.ylabel('幅度')# 计算逆傅里叶变换
y_reconstructed = ifft(yf)# 绘制重构波形
plt.subplot(3, 1, 3)
plt.plot(t, y_reconstructed.real)
plt.title('通过逆傅里叶变换重构的波形')
plt.xlabel('时间 (秒)')
plt.ylabel('幅度')plt.tight_layout()
plt.show()