gpt4 book ai didi

python - 将excel文件转换为python以频率

转载 作者:太空宇宙 更新时间:2023-11-03 19:25:26 26 4
gpt4 key购买 nike

基本上我有一个 Excel 文件,第一列是电压,第二列是时间。我想找到电压的周期,因为它返回 y 轴上的电压和 x 轴上的时间的图表,具有周期性,看起来类似于正弦函数。

为了找到我将 excel 文件上传到 python 的频率,因为我认为这会让事情变得更容易 - 可能有一些我错过的东西可以简化这个过程。

到目前为止,我在 python 中:

import xlrd
import numpy as N
import numpy.fft as F
import matplotlib.pyplot as P

wb = xlrd.open_workbook('temp7.xls') #LOADING EXCEL FILE
wb.sheet_names()
sh = wb.sheet_by_index(0)

first_column = sh.col_values(1) #VALUES FROM EXCEL
second_column = sh.col_values(2) #VALUES FROM EXCEL

现在我如何从中找到频率?

最佳答案

我不确定您对傅立叶变换了解多少,所以如果背景太多,请原谅我。
您的信号没有“频率”,但它可以被认为是许多频率的总和。傅立叶变换将告诉您组成信号的所有频率的权重。不幸的是,当从模拟(连续时间)域采样到数字(离散时间)域时,信息可能会丢失。这对我们可以获得的有关频率的信息施加了限制 - 即我们可以确定的最大频率分量与数字采样率( Nyquist-Shannon criterion )有关:

fs > 2B

其中,fs 是采样率(样本/单位时间,通常以 Hz 或类似单位表示),B 是信号的最大频率。如果您的信号实际上的频率高于B,它们将被“混叠”为低于B的某个值。

对于您的问题,您所要做的就是:

x = N.array(first_column)
X = F.fft(x)

现在X是电压信号的频域表示。根据采样定理,相应的频率轴涵盖[0, fs)。那么,什么是fs?您需要通过查看采样数除以采样信号的总持续时间来计算(请注意此处的单位):

fs = len(second_column) / second_column[-1]

请注意,信号的这种表示也(可能)很复杂,即每个频率都将具有关联的幅度和相位。

希望这对您有所帮助,并且希望我没有涵盖您已经知道的一堆内容。

关于python - 将excel文件转换为python以频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8314840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com