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

news/2024/9/19 2:36:45 标签: python, 开发语言, 代码, csv文件, 示波器, 频谱, FFT
示波器输出的csv文件中有两列数据,分别为时间与电压数据,如何将两列数据转换为频率与幅值数据,这涉及到信号的频谱分析,通常通过快速傅里叶变换(FFT)实现。以下是逐步的详细说明:
1、准备工作
①导入数据

首先,导入CSV文件中的数据,CSV文件中有两列数据,分别为时间(time)和电压(voltage)。

python">import pandas as pd

# 读取CSV文件
df = pd.read_csv('data.csv')
time = df['time'].values
voltage = df['voltage'].values
预处理数据

确保时间序列是均匀分布的(即时间间隔相同)。如果数据不均匀,可能需要插值处理。

python">import numpy as np

# 计算时间间隔
dt = np.mean(np.diff(time))
2、执行傅里叶变换

傅里叶变换将时间域信号转换为频率域信号。使用快速傅里叶变换(FFT)可以高效地完成这个任务。

①执行FFT

使用FFT算法将电压信号从时间域转换到频域。

python">from scipy.fft import fft, fftfreq

# 执行FFT
N = len(voltage)
T = dt  # 采样周期

yf = fft(voltage)
xf = fftfreq(N, T)[:N // 2]
②计算幅值

幅值是频域信号的绝对值。只取前半部分是因为FFT结果是对称的。 

python">import numpy as np

# 计算幅值
amplitude = np.abs(yf[:N // 2])
3、可选:绘制图形

如果你想要可视化结果,可以使用Matplotlib库绘制频谱图。

python">import matplotlib.pyplot as plt

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

将频率和幅值保存到新的CSV文件中。

python"># 保存频率和幅值到CSV
result_df = pd.DataFrame({
    'Frequency': xf,
    'Amplitude': amplitude
})

result_df.to_csv('frequency_amplitude.csv', index=False)
5、总结

①导入CSV数据将时间和电压数据读入程序。

②预处理数据确保时间间隔一致。

③执行FFT将电压信号从时间域转换到频域。

④计算幅值FFT结果中提取幅值。

⑤绘图和保存结果可视化频谱图并保存为CSV文件。

这样,就完成了从时间与电压数据到频率与幅值数据的转换。


http://www.niftyadmin.cn/n/5664893.html

相关文章

数据库事务的详解

1、 介绍 什么是事务? 事务是一个原子操作。是一个最小执行单元。可以由一个或多个SQL语句组成,在同一个事务当中,所有的SQL语句都成功执行时,整个事务成功,有一个SQL语句执行失败,整个事务都执行失败。(一组操作同时…

英飞凌PSoC4000T示例工程

关于PSoC4000T的初步介绍见:英飞凌MCU第五代高性能CAPSENSE技术PSoC4000T_psoc 4000t-CSDN博客 下面这个工程,在modustoolbox中可编译、下载到开发板、debug调试。 编译时会用到mtb_shared这个库: 已经pdl这个periperal driver library库:

继承1 2024_9_18

1.继承的基本用法 当需要继承的时候,我们就在派生类的后面加上一个权限父类,这个权限可以是公有,保护和私有,后面就是继承的父类.此时,下面的stu这个派生类,也就可以使用Person里面的方法了. 2.继承基类成员访问方式的变化 当父类被继承到派生类的时候,此时会根据继承方式的不…

【算法竞赛】队列

队列相关概念 队列中的数据存取方式是“先进先出”,只能向队尾插入数据,从队头移出数据. 队列的原型在生活中很常见,如食堂打饭的队伍,先到先服务.队列有两种实现方式:链队列和循环队列,如图1.2所示. 链队列可以看作单链表的一种特殊情况,用指针把各个节点连接起来. 循环队…

QCustomPlot笔记(一)

文章目录 简介将帮助文档添加到Qt Creator中编译共享库cmake工程编译提示ui_mainwindow.h找不到qcustomplot.h文件 环境:windowsQt Creator 10.0.1cmake 简介 QT中用于绘制曲线的第三方工具 下载地址:https://www.qcustomplot.com/index.php/download 第一个压缩…

一、Numpy入门

Numpy入门 前言一、numpy简介二、Numpy的ndarray属性2.1. 直接用 .属性的方法实现2.2. 直接函数的方法实现 三、Numpy的ndarray的创建3.1. ndarray介绍3.2. 数组形式3.3. zeros()、ones() 、 empty()3.4. arange(),类似 python 的 range() ,创建一个一维…

特价电影票对接接口平台推荐?微客云影票

特价电影票对接接口平台推荐 一、常见的较好平台 微客云影票与全国 12000 多家影院建立了合作,覆盖范围广,其提供的电影票价格普遍低于市场价,平均每张票能省下不少钱,在万达、CGV 等大型影院优惠更为显著。 二、判断平台好坏的…

为什么你的下一个项目应该使用 NextJS 而不是 React?

当我第一次涉足 Web 开发世界时,我被 React 的强大功能和多功能性所吸引。 作为最受欢迎的库之一,它似乎是构建动态用户界面的首选。 然而,随着我的项目变得越来越复杂,我发现自己面临着挑战我的效率和可扩展性的限制。 就在那…