微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SciPy 的 FFT 输出令人困惑,或者我可能误解了

如何解决SciPy 的 FFT 输出令人困惑,或者我可能误解了

我正在对一维信号应用 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,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,)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。