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

发布于 2025-01-14 08:18:33 字数 1102 浏览 2 评论 0原文

我正在尝试使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不再见 2025-01-21 08:18:33

您的 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:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文