首页 > 解决方案 > 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, 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,)

标签: pythonpandasnumpyscipyfft

解决方案


推荐阅读