python scipy FFT 无法绘图,并且我的数据集结果看起来不太好
我正在尝试使用 scipy.fft 来查看数据中的噪声。 原始数据是示波器采集的电信号数据集。
主频为60MHz, 总共 250000 个数据点(行),即 2 秒(实际上)。 噪音应该无处不在。
问题是当我绘制它时,xf 和 yf 无法对齐。
ValueError:x 和 y 必须具有相同的第一维度,但具有形状 (270000000,) 和 (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()
I am trying to use scipy.fft to see the noise in my data.
The raw data is a electrical signal dataset which collect by oscilloscope.
The primary frequency is 60MHz,
The total is 250000 data points(rows) which is 2 sec(in reality).
The noise should be all over the place.
The problem is that when I plot it, the xf and yf can't aligned.
ValueError: x and y must have same first dimension, but have shapes (270000000,) and (250000,)
I copied the code from:
https://docs.scipy.org/doc/scipy/tutorial/fft.html
It doesn't work well for my dataset, but I am not sure why this happened.
My dataset is here: 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()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的 SAMPLE_RATE 不正确。
如果 250,000 行总计 2 秒,则您的 SAMPLE_RATE 应为 125kHz,但您指定
SAMPLE_RATE = 180000000
。更正 SAMPLE_RATE 会产生以下图:
Your SAMPLE_RATE is incorrect.
If 250,000 rows amount to 2s, your SAMPLE_RATE should be 125kHz, yet you specify
SAMPLE_RATE = 180000000
.Correcting the SAMPLE_RATE yields the following plot: