相关疑难解决方法(0)

Python:使用 SciPy 文档对 .csv 值执行 FFT

我想对数据系列执行快速傅里叶变换。该系列包含 407 天内一致采样的每日地震振幅值。我想在这个数据集中搜索任何周期性周期。

我在这里使用 SciPy 文档进行了初步尝试:https://docs.scipy.org/doc/scipy/reference/tutorial/fftpack.html。类似于这个问题(链接),然后我将 y 的参数从人工正弦函数更改为我的数据集。

但是,我收到以下错误:

ValueError: x and y must have same first dimension, but have shapes (203,) and (407, 1)
Run Code Online (Sandbox Code Playgroud)

我希望能帮助您理解为什么会出现此错误以及如何修复它。

我还希望获得有关 FFT 处理数据集所需的正确频率和采样输入值的帮助。我的数据集中有 407 个值,每个值代表一天。因此,我定义了 N(样本点数)= 407,T(样本间距)= 1 / 84600(1 / 一天的秒数)。那是对的吗?

这是我的完整代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft, ifft
import pandas as pd

# Import csv file
df = pd.read_csv('rsam_2016-17_fft_test.csv', index_col=['DateTime'], parse_dates=['DateTime'])
print(df.head())

#plot data
plt.figure(figsize=(12,4))
df.plot(linestyle = '', marker = '*', color='r') …
Run Code Online (Sandbox Code Playgroud)

python csv fft scipy valueerror

6
推荐指数
1
解决办法
2万
查看次数

从xy点列表中进行离散傅里叶变换

我想要做的是,从具有周期性模式的xy点列表中,计算周期.凭借我有限的数学知识,我知道傅立叶变换可以做到这一点.

我正在编写Python代码.

我在这里找到了一个相关的答案,但是它使用了均匀分布的x轴,即dt固定,这对我来说并非如此.由于我不太了解它背后的数学,我不确定它是否能在我的代码中正常工作.

我的问题是,它有效吗?或者,是否有一些方法numpy可以完成我的工作?或者,我该怎么办?

编辑:所有值都是Pythonic float(即双精度)

python math numpy

3
推荐指数
1
解决办法
1688
查看次数

用Python进行傅里叶变换

我有一组数据。它显然具有一定的周期性。我想通过使用傅里叶变换找出它的频率并将其绘制出来。

这是我的一个镜头,但看起来不太好。在此输入图像描述

这是相应的代码,我不知道为什么它失败:

import numpy
from pylab import *
from scipy.fftpack import fft,fftfreq
import matplotlib.pyplot as plt
dataset = numpy.genfromtxt(fname='data.txt',skip_header=1)
t = dataset[:,0]
signal = dataset[:,1]
npts=len(t)

FFT = abs(fft(signal))
freqs = fftfreq(npts, t[1]-t[0])
subplot(211)
plot(t[:npts], signal[:npts])
subplot(212)
plot(freqs,20*log10(FFT),',')
xlim(-10,10)
show()
Run Code Online (Sandbox Code Playgroud)

我的问题是:由于原始数据看起来非常周期性,并且我期望看到在频域中峰值非常尖锐;我怎样才能让峰看起来更漂亮?

python data-analysis scipy python-2.7

1
推荐指数
1
解决办法
6124
查看次数

如何在python3中找到不均匀采样信号的FFT?

我有一个样本间隔(时间)不均匀的数据。我怎样才能找到信号的 FFT 并绘制它。

python signals signal-processing fft python-3.x

0
推荐指数
1
解决办法
4707
查看次数