numpy fft在绘图时返回原始频率

时间:2017-06-26 08:55:11

标签: python numpy matplotlib fft frequency-analysis

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)时,我得到频率。但是当我从文件或数组中读取正弦曲线时。

1 个答案:

答案 0 :(得分:2)

x = df.values 

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

x = df.values.ravel()

你的脚本会起作用。