【问题标题】:numpy fft returns orginal frequency when plottingnumpy fft 在绘图时返回原始频率
【发布时间】:2017-06-26 08:55:11
【问题描述】:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.read_csv('signal180_single.csv', sep=',', header=None)
x = df.values
length = len(x)
# frequency 0.02s
fs = 50.0
t = np.arange(0, length/fs,1.0/fs)

xF = np.fft.fft(x)
N = len(xF)
xF = xF[0:N/2]

# plot frequencys from 0 to fs, with num = N/2
fr = np.linspace(0,fs,N/2)

plt.figure()
plt.subplot(211)
plt.plot(t,x)
plt.subplot(212)
plt.plot(fr, abs(xF))
plt.show()

我正在将 180000 个浮点值从文件写入数组。 这些值以 50Hz 采样,包含 2Hz 的正弦波。

然后我在上面的绘图窗口中绘制频率。 我想在下部绘图窗口中绘制频率的频谱,但我得到与上部绘图窗口相同的值。 谁能看到错误在哪里?

当我绘制公式 x = np.sin(10*t) + np.cos(3*t) 时,我得到了频率。但不是当我从文件或数组中读取窦性。

【问题讨论】:

  • 如果解决了您的问题,请accept回答。您无需在标题中添加“已解决”。完成此操作后,该问题将被标记为已解决。

标签: python numpy matplotlib fft frequency-analysis


【解决方案1】:

一行

x = df.values 

返回一个 180000 x 1 的数组。每个值都单独存储。在这种情况下,将行替换为:

x = df.values.ravel()

您的脚本将起作用。

【讨论】:

  • 谢谢你,所以这是我必须修复的数据数组。现在可以了。
  • 很高兴它解决了您的问题。还有一件事,您能否将问题标记为已回答?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 2021-01-26
  • 2020-07-15
  • 2013-07-13
  • 2020-04-22
  • 1970-01-01
相关资源
最近更新 更多