import numpy as np
import matplotlib.pyplot as plt
# 生成一个示例信号
# 时间向量
t = np.linspace(0, 1, 400, endpoint=False)
# 信号频率为5 Hz和20 Hz的组合
signal = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 20 * t)
# 计算FFT
fft_result = np.fft.fft(signal)
# 频率轴
frequencies = np.fft.fftfreq(len(t), d=t[1] - t[0])
# 只取正频率部分
positive_frequencies = frequencies[:len(frequencies)//2]
positive_fft_result = np.abs(fft_result[:len(fft_result)//2])
# 绘制原始信号
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(t, signal)
plt.title('Original Signal')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
# 绘制FFT结果
plt.subplot(2, 1, 2)
plt.plot(positive_frequencies, positive_fft_result)
plt.title('FFT Result')
plt.xlabel('Frequency [Hz]')
plt.ylabel('Magnitude')
plt.tight_layout()
plt.show()
生成示例信号:
np.linspace
创建时间向量 t
,表示0到1秒的时间范围。计算FFT:
np.fft.fft
对信号进行快速傅里叶变换(FFT),得到频域表示。np.fft.fftfreq
计算对应的频率轴。处理频率轴:
绘制结果:
matplotlib
绘制原始信号和FFT结果。上一篇:python中str的用法
下一篇:python时间
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站