python scipy FFT 无法绘图,而且我的数据集的结果看起来不太好

python scipy FFT can't plot, and result does not looks good by my dataset

我正在尝试使用 scipy.fft 查看数据中的噪声。 原始数据是通过示波器采集的电信号数据集。

主频60MHz, 总共是 250000 个数据点(行),即 2 秒(实际上)。 噪音应该到处都是。

问题是当我绘制它时,xf 和 yf 无法对齐。

ValueError: x and y must have same first dimension, but have shapes (270000000,) and (250000,)

我从以下位置复制了代码: https://docs.scipy.org/doc/scipy/tutorial/fft.html

它不适用于我的数据集,但我不确定为什么会这样。 我的数据集在这里:https://drive.google.com/file/d/19HFOIZyfI0rOy2_G-csqtCs7He27LhLg/view?usp=sharing

import pandas
import numpy as np
import matplotlib.pyplot as plt
from scipy.fft import fft, fftfreq

df = pandas.read_csv("Stephan0314_V8CHH2F_ME1.csv", skiprows=20)

SAMPLE_RATE = 180000000         #Hz
DURATION = int((df["TIME"].max() - df["TIME"].min()) * 1000) #ms

N = SAMPLE_RATE * DURATION

x = df['CH2'].to_numpy()

yf = fft(x)
xf = fftfreq(N, 1 / SAMPLE_RATE)[:N//2]

plt.plot(xf, 2.0/N * np.abs(yf[0:N//2]))
plt.show()

您的 SAMPLE_RATE 不正确。

如果 250,000 行等于 2s,您的 SAMPLE_RATE 应该是 125kHz,但您指定 SAMPLE_RATE = 180000000

更正 SAMPLE_RATE 产生以下图: