当前位置: 首页 > news >正文

【python版】示波器输出的csv文件(时间与电压数据)如何转换为频率与幅值【方法⑤】

将示波器输出的 CSV 文件中包含的时间和电压数据转换为频率和幅值数据,通常涉及到信号的频谱分析。下面是一步一步的详细说明:
1、读取 CSV 文件

首先,需要读取 CSV 文件中的时间和电压数据。假设 CSV 文件包含 TimeVoltage 两列数据。

示例 CSV 文件内容:

Time,Voltage
0.000,0.0
0.001,1.0
0.002,0.0
0.003,-1.0
0.004,0.0
...
2、数据预处理

①清理数据确保数据中没有缺失值或错误值。

②采样频率计算采样频率 fs。采样频率是数据中时间间隔的倒数。假设你的时间间隔是恒定的(例如 0.001 秒),则:

 在这个例子中,时间间隔为 0.001 秒,所以采样频率 fs = 1000 Hz。

3、执行傅里叶变换

傅里叶变换将时域信号转换为频域信号。可以使用离散傅里叶变换(DFT)或快速傅里叶变换(FFT)来完成这一过程。以下是如何使用 FFT 来计算频率和幅值:

①使用 FFT

导入必要的库:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

读取数据

data = pd.read_csv('your_data.csv')
time = data['Time'].values
voltage = data['Voltage'].values

计算采样频率

dt = time[1] - time[0]  # 时间间隔
fs = 1 / dt  # 采样频率

执行 FFT

N = len(voltage)  # 数据点数
yf = np.fft.fft(voltage)
xf = np.fft.fftfreq(N, dt)

取绝对值并只保留正频率部分

xf = xf[:N//2]
yf = np.abs(yf[:N//2])
②计算频率和幅值

绘制频谱(可选):

plt.plot(xf, yf)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.title('Frequency Spectrum')
plt.show()
4、保存结果

如果希望将结果保存到新的 CSV 文件中:

result = pd.DataFrame({'Frequency': xf,'Amplitude': yf
})
result.to_csv('frequency_amplitude.csv', index=False)
5、总结

①读取和预处理数据

②计算采样频率

③执行 FFT 并处理结果

④绘制或保存频谱数据

这样,就可以将时间和电压数据转换为频率和幅值数据了。


http://www.mrgr.cn/news/29188.html

相关文章:

  • Docker常用命令大全
  • 【RabbitMQ】RabbitMQ 概述
  • python爬虫之json模块和jsonpath模块(5)
  • 【30天玩转python】网络编程基础
  • python爬虫之正则表达式(3)
  • java日志框架之JUL(Logging)
  • JavaScrip中的this、作用域代码输出题
  • 深入理解Redis:缓存穿透、缓存击穿、缓存雪崩及双写一致性
  • 【乐企-业务篇】乐企前置条件规则枚举
  • 基于Qt的串口调试工具串口常见问题
  • NASA:ATLAS/ICESat-2 L3 A陆地冰高度,版本6
  • Java应用的数据库连接池连接回收策略
  • 使用MongoDB存储和查询数据的Python函数实现
  • Java | Leetcode Java题解之第413题等差数列划分
  • 数据权限的设计与实现系列9——前端筛选器组件Everright-filter集成框架开发2
  • 输煤传送带异物识别检测数据集 yolo数据集 2400张
  • 创建自定义LLM类:更灵活地使用你的语言模型
  • 通信工程学习:什么是OLT光线路终端
  • 在Unity UI中实现UILineRenderer组件绘制线条
  • 【强化学习】如何在不提供标签的情况下通过试错的方式来学习?