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 产生以下图:
我正在尝试使用 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 产生以下图: