我正在对一个1D信号应用Scipy软件包中的FFT。这个信号是以512hz的采样率捕获的,这意味着1秒内有512个数据点。我总共有5分钟的数据。
当我使用下面的代码将Scipy中的FFT应用于该信号时,我会将FFT一次应用于整个信号。据我所知,当我以512的采样率对信号应用FFT时,FFT会应用于前512个点,然后是下512个数据点,依此类推,但此处FFT会一次应用于整个信号,这我不理解。
import numpy as np
import pandas as pd
from scipy.stats import zscore
from scipy.fft import fft, fftfreq,rfft, rfftfreq
import matplotlib.pyplot as plt
df = pd.read_csv("data.csv")
df = df.drop('Unnamed: 0',axis=True)
print(df.head())
# measuring the fft of the signal
def plotFFT(df):#,cleanDF):
sampleRate = 512 # Hz
duration = df.shape[0]
xf = rfftfreq(duration,1/sampleRate)
yf = rfft(df['value'])
fig = plt.figure(num='FFT of signal', figsize=(20,10))
plt.plot(xf,np.real(yf),label='raw')
plt.legend()
plt.grid()
plt.draw()
plt.waitforbuttonpress(0)
plt.close(fig)
plotFFT(df)
当我改变路线
yf = rfft(df['value'])
至
yf = rfft(df['value'],n=sampleRate)
我得到这个错误:
C:\ProgramData\Anaconda3\python.exe C:/Users/BLACK/Desktop/PythonXperiments/FFTScipy/main.py
Traceback (most recent call last):
File "C:/Users/BLACK/Desktop/PythonXperiments/FFTScipy/main.py", line 29, in <module>
plotFFT(df)
File "C:/Users/BLACK/Desktop/PythonXperiments/FFTScipy/main.py", line 21, in plotFFT
plt.plot(xf, np.real(yf), label='raw')
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 2840, in plot
return gca().plot(
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 1743, in plot
lines = [*self._get_lines(*args, data=data,**kwargs)]
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 273, in __call__
yield from self._plot_args(this, kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 399, in _plot_args
raise ValueError(f"x and y must have same first dimension, but "
ValueError: x and y must have same first dimension, but have shapes (53378,) and (257,)
1条答案
按热度按时间zqdjd7g91#
已经一年了,我不知道你是否已经有了解决办法,但我希望我能在这个问题上提供一些线索:
这个程序使用scipy,一个汉宁窗口,并把结果写在一个excel表上,所以我希望这个例子可以帮助人们理解从时间到频率发生了什么。
1.-您需要以admin身份运行此程序2.-Excel文件创建后,将其 checkout ,如果您更改了值,并重新运行程序,您需要关闭Excel文件,或将其另存为另一个文件. 3.-在pyhton 3和windows 10-11中工作